BedrockのカスタムモデルインポートがGAしました🎉🎉🎉
プレビュー期間中に試せなかったので、遅ればせながら試してみました。
モデルを選定
カスタムモデルインポートに対応しているのは以下のアーキテクチャのモデルです。
- Mistral
- Mixtral
- Flan
- Llama 2, Llama3, Llama3.1, and Llama3.2
Llama 3.2は出たばかりなのに対応ってのはすごいですね。
今回は、以下のモデルを試しました。
手順
モデルをS3に配置する
正直、ここが一番めんどくさい。
EC2やSageMaker StudioなどでAWS CLIが使えて、ストレージが十分ある環境を用意して実行してください。
CloudShellはストレージ不足で動作しませんでした
Shell
BUCKET_NAME=xxxxxxxxxx
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade huggingface_hub
huggingface-cli download tokyotech-llm/Llama-3.1-Swallow-8B-Instruct-v0.1 --local-dir ./model
aws s3 cp --recursive \
--exclude ./.cache \
./model s3://${BUCKET_NAME}/model
ここまでできたら、もう、終わったも同然です。
インポートジョブを作成する
-
Bedrock管理画面にアクセス
「基盤モデル」の「インポートしたモデル」を選択します -
モデルの詳細セクションの「モデル名」、モデルインポート設定セクションの「S3の場所」を入力します
しばらく時間がかかりますが、ジョブが完了するまで待ちます。待つのみです。
プレイグラウンドで試す
インポートしたモデルを選べるようになります。
インポート直後だからかエラーになりますが、時間を置くと成功します。
Boto3で試す
InvokeModel
import json
import boto3
client = boto3.client("bedrock-runtime", region_name="us-east-1")
model_id = "arn:aws:bedrock:us-east-1:999999999999:imported-model/d8k3k4pt5dt0"
prompt = "こんにちは!日本の四季について教えて下さい!"
response = client.invoke_model(
modelId=model_id,
body=json.dumps(
{
"prompt": prompt,
}
),
)
response_body = json.loads(response["body"].read().decode("utf-8"))
print(response_body)
{'generation': '日本の四季は、春、夏、秋、冬の4つの季節があります。春は3月から5月までで、桜の花が咲きます。夏は6月から8月までで、暑い日が続きます。秋は9月から11月までで、紅葉が美しいです。冬は12月から2月までで、雪が降ります。日本の四季はそれぞれに美しい景色があります。春は桜の花が咲き、夏は海や山で遊ぶことができます。秋は紅葉が美しく、冬は雪が降ります。日本の四季は、自然の美しさを感じることができます。日本の四季は、文化や伝統にも深く関係しています。例えば、春は新しい始まりの季節として、夏は祭りや花火の季節として、秋は収穫の季節として、冬は静寂の季節として、それぞれに文化や伝統があります。日本の四季は、自然の美しさと文化や伝統の深さを感じることができます。日本の四季は、世界中の人々に愛されています。日本の四季は、自然の美しさと文化や伝統の深さを感じることができるため、世界中の人々に愛されています。日本の四季は、自然の美しさと文化や伝統の深さを感じることができるため、世界中の人々に愛されています。日本の四季は、自然の美しさと文化や伝統の深さを感じることができるため、世界中の人々に愛されています。日本の四季は、自然の美しさと文化や伝統の深さを感じることができるため、世界中の人々に愛されています。日本の四季は、自然の美しさと文化や伝統の深さを感じることができるため、世界中の人々に愛されています。日本の四季は、自然の美しさと文化や伝統の深さを感じることができるため、世界中の人々に愛されています。日本の四季は、自然の美しさと文化や伝統の深さを感じることができるため、世界中', 'generation_token_count': 512, 'stop_reason': 'length', 'prompt_token_count': 13}
Converse
import boto3
client = boto3.client("bedrock-runtime", region_name="us-east-1")
model_id = "arn:aws:bedrock:us-east-1:999999999999:imported-model/d8k3k4pt5dt0"
prompt = "こんにちは!日本の四季について教えて下さい!"
response = client.converse(
modelId=model_id,
messages=[
{
"role": "user",
"content": [{"text": prompt}],
}
],
)
print(response)
{'ResponseMetadata': {'RequestId': '89520a7a-d741-47f9-8284-366e36d7f48d', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Wed, 23 Oct 2024 14:50:14 GMT', 'content-type': 'application/json', 'content-length': '787', 'connection': 'keep-alive', 'x-amzn-requestid': '89520a7a-d741-47f9-8284-366e36d7f48d'}, 'RetryAttempts': 0}, 'output': {'message': {'role': 'assistant', 'content': [{'text': '\n日本の四季は、春、夏、秋、冬の4つの季節があります。\n\n春は、3月から5月までで、桜の花が咲きます。気温が暖かくなり、自然が目覚めます。\n\n夏は、6月から8月までで、暑い季節です。海や山で遊ぶのに最適です。\n\n秋は、9月から11月までで、紅葉が美しい季節です。気温が涼しくなり、食欲が増します。\n\n冬は、12月から2月までで、寒い季節です。雪が降り、温泉に入るのに最適です。\n\nこれが日本の四季です。どれが一番好きですか?'}]}}, 'stopReason': 'end_turn', 'usage': {'inputTokens': 27, 'outputTokens': 169, 'totalTokens': 196}, 'metrics': {'latencyMs': 2725}}
料金
モデルごとに違うようですが、Llamaの場合は以下の通りです。
最新情報は公式サイトを確認ください。
まとめ
めっちゃ簡単でした。
日本語特化LLM、もっとプリーズ!