Upgrade to Pro — share decks privately, control downloads, hide ads and more …

💰年度末予算消化祭💰 Large Memory Instance で 画像分類してみた

💰年度末予算消化祭💰 Large Memory Instance で 画像分類してみた

2023/01/26「Data Engineer Geeks #1 データエンジニアのためのSnowpark入門」登壇資料です。
https://datumstudio.connpass.com/event/270726/

あれ

January 27, 2023
Tweet

Other Decks in Technology

Transcript

  1. 0
    💰年度末予算消化祭💰
    Large Memory Instance で
    画像分類してみた
    2023/01/26
    梶谷 美帆

    View Slide

  2. © 2023 DATUM STUDIO Co. Ltd. 1
    1
    自己紹介
    【名前】
    梶谷 美帆 ( @__allllllllez__ )
    【所属】
    DATUM STUDIO株式会社
    データエンジニアリング本部
    データエンジニア部
    たまに記事を書いてます。
    Zenn→ https://zenn.dev/allllllllez
    ツイッターのすがた

    View Slide

  3. © 2023 DATUM STUDIO Co. Ltd. 2
    2
    コンテンツ
    • Large memory instance(Snowpark 最適化インスタンス)とは
    • 使ってみよう
    • 感想
    • おまけ

    View Slide

  4. © 2023 DATUM STUDIO Co. Ltd. 3
    Large Memory Instance
    (Snowpark 最適化インスタンス)
    とは?

    View Slide

  5. © 2023 DATUM STUDIO Co. Ltd. 4
    4
    Large Memory Instance(Snowpark 最適化インスタンス)とは?
    • 背景
    • Snowpark により Snowflake で 機械学習ができるようになった🎉
    • しかし、機械学習(特にトレーニング)ではメモリを大量に消費する
    • 通常のウェアハウスはメモリが大きくない…
    • 2021/8 時点で 1ノード3GB だった
    https://developers.cyberagent.co.jp/blog/archives/31167/
    • 機械学習のためにはメモリマシマシウェアハウスが必要!!
    • スペック
    • メモリ16倍
    • 消費クレジットは 1.5 倍
    • 使い方
    • WAREHOUSE_TYPE = ‘SNOWPARK-OPTIMIZED’ をつけるだけ
    • またはWebUIで「Warehouse Type」を Snowpark-optimizedにする
    • サイズは Medium 以上に限る
    通常のウェアハウスよりもメモリが増設されたウェアハウス
    Snowflake Summit 2022 で
    発表された際は
    「Large Memory Instance」
    と呼ばれていました

    View Slide

  6. © 2023 DATUM STUDIO Co. Ltd. 5
    使ってみよう

    View Slide

  7. © 2023 DATUM STUDIO Co. Ltd. 6
    6
    お題:画像分類
    Large Memory Instance が出たので、
    機械学習やってみようかな…
    テーブルデータもいいけど、他のデータも触りたい
    な…
    試しに、画像分類やってみようかな!
    TensorFlow のチュートリアルをやってみよう。
    画像データはステージに置けばいいよね!

    View Slide

  8. © 2023 DATUM STUDIO Co. Ltd. 7
    7
    お題:画像分類
    • Snowpark 環境(Secure Sandbox)
    からステージ内のファイルにアクセス
    するには Private Preview 機能が必要
    • https://qiita.com/takada_tf/items/f5c10924235ff2d2f086
    • 詰みです😇
    こちらより引用:
    https://www.snowflake.com/blog/snowpark-
    python-innovation-available-all-snowflake-
    customers/

    View Slide

  9. © 2023 DATUM STUDIO Co. Ltd. 8
    おわり

    View Slide

  10. © 2023 DATUM STUDIO Co. Ltd. 9
    …

    View Slide

  11. © 2023 DATUM STUDIO Co. Ltd. 10
    諦めないよ!

    View Slide

  12. © 2023 DATUM STUDIO Co. Ltd. 11
    11
    画像データを(何とかして)ロードする
    こうする:
    • 画像を base64 エンコード
    • エンコードされた画像(文字列)とラベルのテーブルを作成
    • トレーニング用ストアド内で画像(文字列)を base64 デコード、ファイル保存
    外にアクセスできないなら、中で作ればいいんだよ
    TYPE BASE64_IMG
    rose iVBORw0K…
    tulip SUhEUgAA…
    : :

    View Slide

  13. © 2023 DATUM STUDIO Co. Ltd. 12
    12
    画像データを(何とかして)ロードする
    これをこう

    View Slide

  14. © 2023 DATUM STUDIO Co. Ltd. 13
    13
    学習してみた
    トレーニング用ストアドを作ります

    View Slide

  15. © 2023 DATUM STUDIO Co. Ltd. 14
    14
    学習してみた
    チュートリアルに沿ってモデルを作成していく

    View Slide

  16. © 2023 DATUM STUDIO Co. Ltd. 15
    15
    学習してみた
    学習したら、モデルを内部ステージに保存
    こちらを参考に
    https://qiita.com/takada_tf/items/e9a471696e566b3d4c26

    View Slide

  17. © 2023 DATUM STUDIO Co. Ltd. 16
    16
    学習してみた
    トレーニング用ストアドを作成して、トレーニング開始!

    View Slide

  18. © 2023 DATUM STUDIO Co. Ltd. 17
    17
    学習してみた
    裏では Large Memory Instance が頑張っていました

    View Slide

  19. © 2023 DATUM STUDIO Co. Ltd. 18
    18
    予測してみた
    新しい花の画像を読み込ませて、予測してみます

    View Slide

  20. © 2023 DATUM STUDIO Co. Ltd. 19
    19
    予測してみた
    base64エンコードして UDF に渡します
    こちらを参考に https://iamontheinet.medium.com/image-recognition-in-snowflake-using-snowpark-
    python-pytorch-streamlit-and-openai-1a8167b82449

    View Slide

  21. © 2023 DATUM STUDIO Co. Ltd. 20
    20
    予測してみた
    Snowflake が花を覚えてくれました😆

    View Slide

  22. © 2023 DATUM STUDIO Co. Ltd. 21
    感想

    View Slide

  23. © 2023 DATUM STUDIO Co. Ltd. 22
    22
    感想
    • 画像分類も動かせるので Snowflake なんでもできますね!!!
    • Snowpark 最適化インスタンスのおかげで、メモリの心配がなくなった
    • もっと大規模なタスクもできそうな予感
    • 使えるパッケージが豊富
    • 今回の TensorFlow チュートリアルはそのまま移植できました
    • Anaconda様様
    • 正式な機能を使いましょう
    • 画像の持ち込み、超手間でした(邪道。。。)
    • 今回使用したデータセットは 230MB 程度ですが、もっと大きなデータセットだとストレージに乗るのか、
    などいろいろ不明。。。
    • やめようね!プライベートプレビュー申し込もうね!

    View Slide

  24. © 2023 DATUM STUDIO Co. Ltd. 23
    おまけ

    View Slide

  25. © 2023 DATUM STUDIO Co. Ltd. 24
    24
    おまけ
    _人人人人人人_
    > 消化 <
    > してない <
    ï¿£Y^Y^Y^Y^Y^Y^ï¿£
    弊部の予算は守られましたとさ。
    おしまい
    予算消化状況(今回の発表のために消費したクレジット)

    View Slide

  26. © 2023 DATUM STUDIO Co. Ltd. 25
    参考資料

    View Slide

  27. © 2023 DATUM STUDIO Co. Ltd. 26
    26
    参考資料
    • Image Recognition in Snowflake using Snowpark Python, PyTorch,
    Streamlit and OpenAI
    • ソース:https://github.com/Snowflake-Labs/sfguide-snowpark-pytorch-streamlit-openai-image-rec
    • IrisデータセットをSnowparkで操作してみた。(機械学習もしてるよ)
    • Snowflake上で画像分類タスクを実行してみた
    • https://www.tensorflow.org/tutorials/images/classification

    View Slide

  28. © 2023 DATUM STUDIO Co. Ltd. 27
    おわり

    View Slide