20250313_AsiaQuest×Fusic勉強会

405 Views

March 13, 25

スライド概要

profile-image

株式会社 Fusic で機械学習エンジニアをしています。自然言語処理に興味があります。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

CONFIDENTIAL サーバレスで LLM を動かしたい! 【AsiaQuest×Fusic】AWSから表彰されたエンジニアが語る!2社コラボLT会 2025.03.13 瓦祐希 @kawara_y ©Fusic Co., Ltd. 0

2.

はじめに 自己紹介 株式会社 Fusic 事業本部 先進技術部門 機械学習チーム 瓦 祐希 Yuki Kawara • 博士(情報科学) • 2024 Japan AWS Jr. Champions • 甲賀忍者検定初級 • ビール検定三級 @kawara_y ©Fusic Co., Ltd. 1

3.

コンテンツタイトルの書式設定 サーバレス(Lambda)で 機械学習モデル動かしたくない? ©Fusic Co., Ltd. 2

4.

過去に Lambda で 3B の LLM を動かした • パラメータサイズ 3B の LLM を Lambda で動かした [1] (参考までに、Deepseek-R1 のパラメータ総数は 671B[2]) • Lambda のメモリ上限は 10 GB なのでモデルのサイズを少なくとも 10 GB 以下にする必要がある → 量子化を使用 • 3B のモデルでは 5.3GB から 1.6GB になり、無事 Lambda で動いた • しかし 7B のモデルは Lambda で動かなかった (恐らく実行時にメモリサイズを超過する) @kawara_y [1] https://zenn.dev/fusic/articles/llm-on-aws-lambda [2] https://huggingface.co/deepseek-ai/DeepSeek-R1 ©Fusic Co., Ltd. 3

5.

Lambda で LLM を動かすために 3B のモデルだったら量子化することで Lambda のメモリ制限内に収まって動くけど、 7B のモデルは実行時に多分メモリサイズを超過して モデルが動かなくなるなあ… どうにかして動かないかな… でも量子化しても無理なら諦めるか… @kawara_y ©Fusic Co., Ltd. 4

6.

ある日の夢の中で… Transformer の形よく見てみ。 何かに似てる気しねえ? AWS 知ってる君なら分かるよね? @kawara_y ©Fusic Co., Ltd. 5

7.

LLM の構造 • Transformer ベースのモデルでは 「タスク」をいくつか組み合わせた ようなものになっている • 各タスクは前の処理結果を 受け取って計算して次のタスクへ • ワークフローを定めたら計算結果が 勝手に流れていくだけ → StepFunction に見えてくる…? ブロック内での処理 @kawara_y ©Fusic Co., Ltd. 6

8.

実際に作るもの • Llama-3.1-Swallow-8BInstruct-v0.3 を使った • モデルの構造は右図 • 例えば LlamaDecodeLayer は 32 層ある、なんてことが分かる @kawara_y ©Fusic Co., Ltd. 7

9.

実際に作ったもの • 各タスクでの処理を Lambda で書いて、 それを組み合わせることで LLM の挙動を再現 • 処理結果(各ステート)の受け渡しは S3 経由 (ペイロードの上限を大幅に超えたため) @kawara_y ©Fusic Co., Ltd. 8

10.

実際に作ったもの • 各タスクでの処理を Lambda で書いて、 それを組み合わせることで LLM の挙動を再現 • 処理結果(各ステート)の受け渡しは S3 経由 (ペイロードの上限を大幅に超えたため) • ContinueDecode で何回処理をするかを判断 (モデルによって異なるので、決め打ちしたくない) @kawara_y ©Fusic Co., Ltd. 9

11.

実際に作ったもの • 各タスクでの処理を Lambda で書いて、 それを組み合わせることで LLM の挙動を再現 • 処理結果(各ステート)の受け渡しは S3 経由 (ペイロードの上限を大幅に超えたため) • ContinueDecode で何回処理をするかを判断 (モデルによって異なるので、決め打ちしたくない) • ContinueGenerate で単語の生成を続けるか判断 @kawara_y ©Fusic Co., Ltd. 10

12.

4 トークン出力してみた結果 • 「秋風がそ」まで出力されており、プロンプトに沿っていそう → 恐らく LLM がちゃんと動いている! • 4 トークンで 30 分くらいかかっており、とてつもなく遅い (うまく改善したいがいい感じのを思いついていない) @kawara_y ©Fusic Co., Ltd. 11

13.

まとめ • 「Lambda で LLM を動かしたい」という熱意だけで、無理やり LLM が Lambda で動かせるような仕組みを作ってみた • 実用的な部分はほとんどない(あまりにも遅すぎるため) • LLM の仕組みを知れるので面白いし、実際に動くと結構感動するので オススメ!(GitHub にコードも一応公開してます[3]) [3] https://github.com/yukikawara/swallow-on-lambda @kawara_y ©Fusic Co., Ltd. 12

14.

Thank You ご清聴いただきありがとうございました! We are Hiring! https://recruit.fusic.co.jp/ @kawara_y ©Fusic Co., Ltd. 13