🌴

Bedrockじゃない選択肢も知ろう!Amazon SageMaker JumpStartでファインチューニング

2024/09/08に公開

そういえばファインチューニングもあったな

最近はAmazon Bedrockのアップデートがめざましく、そのキャッチアップをするのに必死だったが、
「あれファインチューニングって選択肢もあったけど、まだあまり触ってないぞ」
と思い立ったのでAmazon SageMakerに少し入門してみる。

またAmazon SageMakerは、8月末に新しく出た資格「AWS Certified AI Practitioner」と「AWS Certified Machine Learning Engineer - Associate」の出題範囲にもなっているのでちょうどいい!

Amazon Bedrockでもファインチューニングはできる

タイトルにあるSageMakerを使わなくても、Bedrockでもカスタムモデルを使用してファインチューニングすることができます。
ただ2024/09/08時点では、サポートされてる基盤モデルの数は少なめです。

Amazon Titan Text G1 - Express amazon.titan-text-express-v1
Amazon Titan Text G1 - Lite amazon.titan-text-lite-v1
Amazon Titan Text プレミアム amazon.titan-text-premier-v1:0:32k(プレビュー)
Amazon Titan Image Generator G1 V1 amazon.titan-image-generator-v1
Amazon Titan Image Generator G1 V2 amazon.titan-image-generator-v2:0
Amazon Titan Multimodal Embeddings G1 G1 amazon.titan-embed-image-v1
Cohere Command cohere.command-text-v14
Cohere Command Light cohere.command-light-text-v14
Meta Llama 2 13B meta.llama2-13b-chat-v1
Meta Llama 2 70B meta.llama2-70b-chat-v1
Anthropic Claude 3 Haiku anthropic.claude-3-haiku-20240307-v1:0(プレビュー)
https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/custom-model-supported.html

そのためここにないモデルを使用したい、もっと高度なパラメータ調整をしたい場合はSageMakerが選択肢に上がってきます。

また現在プレビュー版ですが、BedrockではSageMakerのモデルをインポートすることもできます。
https://aws.amazon.com/jp/blogs/news/import-custom-models-in-amazon-bedrock-preview/

そもそもファインチューニングとRAG

SageMaker JumpStartの話をする前に、Bedrockを使う方のメインユースケースと言ってもいい、RAGとファインチューニングの使い分けについて考えてみます。
それぞれ以下のメリットがあります。

ファインチューニング

  • 基盤モデルが知らない知識を与えられる
  • プロンプトを短くできる(そのためレイテンシーが短くなる)
  • 汎用的なものではなく、何かに特化して回答を生成するためコストパフォーマンスが良くなる

RAG

  • ハルシネーションを抑制できる(正解のドキュメントが存在するため)
  • 情報ソースをレスポンスに加えられる
  • ドキュメントを検索できれば良い、というユースケースにバッチリ

どちらか一方、というわけではなく組み合わせることも可能です。

ファインチューニングはハードルが高すぎる

とはいえファインチューニングを行うには、以下などの労力が必要になります。

  • ファインチューニングに耐え得るインフラの構築
  • 機械学習自体の学習
  • 学習データの作成

などなど…アルゴリズムやモデルを動かすまでに時間がかかります。

そこでAmazon SageMaker JumpStart

事前トレーニング済みのモデルを最初から提供してくれるサービスで、UIをポチポチするだけでモデルを構築・カスタマイズできます。

公開されている基盤モデル

公開されているテキスト生成モデルだけでも、これだけあります。(右のスクロールバー注目)
※以下、2024/09/08時点の情報です。最新情報はAWS公式サイトをご参照ください。

JumpStart 基盤モデルを調べるにはこちら↓を参照ください。

やってみる

SageMakerドメインを作成

SageMaker JumpStartを使用するためには「ドメイン」が必要です。
※10分程かかります

モデルをデプロイする

今回はSageMaker Studioを使用し、SageMaker JumpStartを試してみます。
SageMakerのコンソールからStudioを選択します。

「Studioを開く」ボタンを選択すると、このような画面が表示されます。

今回は「Meta-Llama-3.1-8B-Instruct」のモデルを使用します。

「Deploy」ボタンから、デプロイしてみます。

デプロイが完了しました。

動作確認

「Test inference」から「Test the sample request」でリクエストを送ってみます。

デフォルトでは英語でマヨネーズの作り方を聞くプロンプトが入力されています。

おにぎりの作り方を聞いてみます。

日本語でもそれっぽいレスポンスが返却されています。

ファインチューニング

ファインチューニングをするためには、デプロイした時と同じモデル選択の画面から「Train」を選択します。

ファインチューニングに使用するトレーニングデータは、サンプルのデータセットかS3にあるデータセットどちらかを選択します。これで特定のデータセットを使用してファインチューニングをすることが可能です。

上記の方法以外にも、Jupyter Notebookで実行することもできます。
サンプルのコードはawsのGitHubに用意されています。
https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/jumpstart-foundation-models/llama-3-finetuning.ipynb

おわり

だいぶAWSがやってくれるとは言えど、機械学習の知識は必要なのでファインチューニングはハードルが高いなぁ。。

参考

https://www.youtube.com/watch?v=fpcJDd5rEwM
https://aws.amazon.com/jp/blogs/news/fine-tune-text-to-image-stable-diffusion-models-with-amazon-sagemaker-jumpstart/
https://aws.amazon.com/jp/blogs/machine-learning/fine-tune-llama-3-for-text-generation-on-amazon-sagemaker-jumpstart/
https://aws.amazon.com/jp/blogs/news/import-custom-models-in-amazon-bedrock-preview/

アイレット株式会社

Discussion