4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GAしたBedrockのカスタムモデルインポートを検証!とっても簡単に日本語特化LLMモデルをBedrock化できる!!!

Posted at

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

ここまでできたら、もう、終わったも同然です。

インポートジョブを作成する

  1. Bedrock管理画面にアクセス
    「基盤モデル」の「インポートしたモデル」を選択します

  2. 「ジョブ」タブを選択し、「インポートモデル」ボタンをクリックします

  3. モデルの詳細セクションの「モデル名」、モデルインポート設定セクションの「S3の場所」を入力します

何故かIAMロールの作成に失敗したとしてエラーになります。

実際にはIAMロールはうまく作成されていますので、一度エラーを発生させ、作成したIAMロールを選択すると良いと思います。

そのうち修正されると思います

しばらく時間がかかりますが、ジョブが完了するまで待ちます。待つのみです。

プレイグラウンドで試す

インポートしたモデルを選べるようになります。

us-east-1.console.aws.amazon.com_bedrock_home_region=us-east-1 (34).png

インポート直後だからかエラーになりますが、時間を置くと成功します。

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の場合は以下の通りです。

image.png

最新情報は公式サイトを確認ください。

まとめ

めっちゃ簡単でした。
日本語特化LLM、もっとプリーズ!

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?