Slide 1

Slide 1 text

© 2024 NTT DATA Japan Corporation SPCSでエンドツーエンドな深層学習に挑戦してみた Snowpark Container Servicesで解き放つ!データアプリケーションの魔法 2024年3月1日 株式会社NTTデータ Snowflakeビジネス推進室 檜山 徹(Hiyama Toru)

Slide 2

Slide 2 text

© 2024 NTT DATA Japan Corporation 自己紹介 檜山 徹(Hiyama Toru) 株式会社NTTデータ Snowflakeビジネス推進室員! SnowVillage Team Streamlit メンバー SNS X(Twitter): @toru_data Qiita:@toru_hiyama SnowVillage #certifications にて、 毎日30分~1時間もくもくしてゲット!

Slide 3

Slide 3 text

© 2024 NTT DATA Japan Corporation 目次 エンドツーエンドの深層学習アーキテクチャ ① コンテナ ② 深層学習 ③ ジョブ・コンピュートプール ④ ジョブの確認 ⑤⑥ Streamlitアプリ まとめ

Slide 4

Slide 4 text

© 2024 NTT DATA Japan Corporation エンドツーエンドの深層学習アーキテクチャ ➢ 本LTでは、このアーキテクチャをかいつまんで解説していきます。 開発環境 Snowflake拡張機能 イメージレジストリ ①コンテナイメージPush docker build ~ doker push ~ Compute Pool モデルレジストリ ボリューム(ステージ) execute service in compute pool ~ from @stage spec=spec.yml コンテナ train.py ④マウント ②深層学習資材準備 PUT file:// ~ ④訓練済みモデル保存 ④コンテナロード ③ジョブ定義・実行 ⑤ジョブ実行 ③ジョブ起動 ⑥訓練済み モデル呼び出し イベントテーブル ④イベントログ保存 CI/CDもできるようになってきていますが、 今回は試せていません。

Slide 5

Slide 5 text

© 2024 NTT DATA Japan Corporation ① コンテナイメージと構成ファイル(準備1/3) • Dockerfileからコンテナイメージを作成 • コンテナイメージをSnowflakeリポジトリにアップロード • コンテナ構成ファイル(spec.yml)をアップロード > docker build -t spcs-pytorch . > docker push /spcs-pytorch (snowsql) > put file:///spec.yml @spec_stg 構成ファイルでは下記を指定 • コンテナイメージ • GPUの制限 • マウントするボリューム

Slide 6

Slide 6 text

© 2024 NTT DATA Japan Corporation ② 深層学習 訓練用スクリプト・画像(準備2/3) • PyTorchによる訓練スクリプトを記述 • 超簡易なニューラルネットワークモデルと訓練スクリプト • イベントテーブルへのログ保存 • 訓練済みモデルをSnowflakeのモデルレジストリに登録 • 訓練用資材をボリューム用ステージに配置 (snowsql) > put file:///train.py @volume (snowsql) > put file:///MNIST/* @volume ちなみに、セッションの作成は、 OAuthトークンにより行います。

Slide 7

Slide 7 text

© 2024 NTT DATA Japan Corporation ③ ジョブ定義(準備3/3) • コンピュートプールの作成 • ジョブ定義・実行 execute service in compute pool gpu_job_pool from @spec_stg spec=spec.yml ; create compute pool gpu_job_pool min_nodes=1 max_nodes=1 instance_family=GPU_NV_S ;

Slide 8

Slide 8 text

© 2024 NTT DATA Japan Corporation ④ モデル訓練ジョブの呼び出し結果の確認 ➢ いい感じ! GPUも認識してる ログもちゃんとイベントテーブルに吐き出されてる モデルもモデルレジストリに保存されてる! 学習もできてる (ボリューム(ステージ)に保存)

Slide 9

Slide 9 text

© 2024 NTT DATA Japan Corporation ⑤⑥ Streamlitアプリの作成 ➢ Team Streamlit たるもの、、、作るよ! < きみたち自信満々に間違えててかわいいね。

Slide 10

Slide 10 text

© 2024 NTT DATA Japan Corporation おわりに ◼ 深層学習をするための足回りさえ揃えてしまえば、 開発環境で記述した訓練用コードをPutするだけで、 GPUによるモデル訓練からSnowflakeへのデプロイまで行えることがわかりました。 ✓ SnowflakeのDev・ML機能、だいぶそろってきた! ◼ 今回の検証を通じて、なんでSPCSじゃないといけないの?に対して、 すでにSnowflakeを導入しているが、クラウドをそこまで利用していない方々が、 低い学習コスト・運用コストでコンテナ環境を構築できることにあると感じました。 ✓ やっぱり、マネージドは、プライスレス! 開発環境 Snowflake拡張機能 イメージレジストリ ①コンテナイメージPush docker build ~ doker push ~ Compute Pool モデルレジストリ ボリューム(ステージ) execute service in compute pool ~ from @stage spec=spec.yml コンテナ train.py ④マウント ②深層学習資材準備 PUT file:// ~ ④訓練済みモデル保存 ④コンテナロード ③ジョブ定義・実行 ⑤ジョブ実行 ③ジョブ起動 ⑥訓練済み モデル呼び出し イベントテーブル ④イベントログ保存 CI/CDもできるようになってきていますが、 今回は試せていません。