OCI Data ScienceでのLlama 3.1 405Bの導入 (2024/08/01)

OCI Data ScienceでのLlama 3.1 405Bの導入 (2024/08/01)

https://blogs.oracle.com/ai-and-datascience/post/deploy-llama-31-405b-in-oci-data-science

投稿者: Dipali Patidar | Senior Machine Learning Engineer

Gaurav Kumar | Senior Member of Technical Staff

Mayoor Rao | Consulting Member of Technical Staff

Nipun Garg | Senior Member of Technical Staff

Wendy Yip | Senior Product Manager, OCI Data Science


2024年7月にリリースされたMeta's Llama 3.1 405Bは、カスタム商用ライセンスであるLlama 3.1 Community Licenseを持つ最先端のオープン・ソース・モデルです。最大128,000のコンテキスト・ウィンドウと、8つの言語(英語、ドイツ語、フランス語、イタリア語、ポルトガル語、ヒンディー語、スペイン語およびタイ語)にわたるサポートにより、一般的な知識、ステアビリティ、数学、ツールの使用および多言語翻訳において最先端の機能に関して、AIモデルが競合します。詳細は、モデルの技術仕様を参照してください。


お客様は、Oracle Cloud Infrastructure(OCI)Data ScienceにMetaのLlama 2および3モデルをすでに導入でき、Llama 3.1も導入できるようになりました。Llama 3.1 405Bのパワーを活用するために、OCI Data Science Model Deploymentをhttpエンドポイントとしてモデルをデプロイできます。OCI Data Scienceは、大型のLlama 3.1 405Bを導入できる業界をリードするGPUをサポートしています。


このブログ投稿では、Bring Your Own Container (BYOC)アプローチを通じてOCI Data ScienceにLlama 3.1 405Bをデプロイする方法のステップを説明します。モデルの定量化バージョンであるMeta-Llama-3.1-405B-Instruct-FP8バージョンをデプロイします。



設定


まず、次のコマンドを使用して必要なパッケージをインストールします。


pip install oracle-ads oci huggingface_hub -U



モデル・アーティファクトの準備

HuggingFaceからモデルをダウンロードします


まず、有効なHuggingFaceトークンを使用して、モデル・ファイルをHuggingFaceからローカル・ディレクトリにダウンロードします。Llama 3.1では、ユーザー契約に同意する必要があります。HuggingFaceトークンがない場合は、HuggingFaceからのモデルのダウンロードに関するone.For詳細の生成方法に関するHuggingFaceのドキュメントを参照してください。ドキュメントを参照してください。


huggingface-cli login --token "<your-huggingface-token>"
# Download the LLama3.1 405B model from Hugging Face to a local folder  
huggingface-cli download meta-llama/Meta-Llama-3.1-405B-Instruct-FP8 --local-dir Meta-Llama-3.1-405B-Instruct-FP8


モデルをOCI Object Storageにアップロードします


次に、モデル・フォルダをOCI Object Storageのバージョニングされたバケットにアップロードします。Object Storageバケットは、モデル・アーティファクトの意図しない削除を防ぐためにバージョニングされるように設定されています。Object Storageバケットがない場合は、OCIソフトウェア開発者キット(SDK)またはコンソールを使用して作成します。ネームスペース、コンパートメントおよびバケット名をノートにとります。データ・サイエンス・サービスがモデル・アーティファクトの読取りおよびテナンシのObject Storageバケットへの書込みを許可するようにポリシーを構成します。


allow service datascience to manage object-family in compartment <compartment> where ALL {target.bucket.name='<bucket_name>'}


管理者は、コンソールのIdentity and Access Management (IAM)でポリシーを構成する必要があります。


oci os object bulk-upload --src-dir $local_dir --prefix  "Meta-Llama-3.1-405B-Instruct-FP8/" -bn "<bucket_name>" -ns "<bucket_namespace>"  --auth "resource_principal"


モデルをモデル・カタログに保存します


最後に、オブジェクト・ストレージ・パスを使用して、モデルのモデル・カタログ・エントリを作成します。Accelerated Data Science (ADS) SDKを使用できます。ADSでモデル・バイ・リファレンス機能を使用しています。


from ads.model.datascience_model import DataScienceModel
(DataScienceModel()
     .with_compartment_id(compartment_id) 
     .with_project_id(project_id) 
     .with_display_name("Meta-Llama-3.1-405B-Instruct-FP8") 
     .with_artifact(f"oci://{bucket}@{namespace}/{model_prefix}")).create(model_by_reference=True)


推論コンテナ


vLLMは、大規模言語モデル(LLM)推論とサーバー用の使いやすいライブラリです。コンテナ・イメージは、DockerHubから取得できます。


docker pull --platform linux/amd64 vllm/vllm-openai:v0.5.3.post1


現在、OCI Data Science Model Deploymentは、OCIレジストリ(OCIR)に存在するコンテナ・イメージのみをサポートしています。プルされたvLLMコンテナをプッシュする前に、次のステップでテナンシにリポジトリが作成されていることを確認します:


  1. Container Registryのテナンシに移動します。
  2. 「リポジトリの作成」ボタンを選択します。
  3. 「アクセス・タイプ」で、「プライベート」を選択します。
  4. リポジトリの名前を設定します。この例では、「vllm-odsc」を使用しています。
  5. 「作成」を選択します。


イメージをプッシュするには、DockerでOCIRにログインする必要がある場合があります。ログインするには、Oracle Cloudアカウントおよび認証トークンの下に作成できるAPI認証トークンを使用します。1回のみログインする必要があります。<region>は、使用しているOCIリージョンに置き換えます。


docker login -u '<tenant-namespace>/<username>' <region>.ocir.io


テナンシがOracle Identity Cloud Serviceとフェデレートされている場合は、<tenancy-namespace>/oracleidentitycloudservice/<username>という形式を使用します。その後、コンテナ・イメージをOCIレジストリにプッシュできます。


docker tag vllm/vllm-openai:v0.5.3.post1 -t <region>.ocir.io/<tenancy>/vllm-odsc/vllm-openai:v0.5.3.post1
docker push <region>.ocir.io/<tenancy>/vllm-odsc/vllm-openai:v0.5.3.post1


モデルのデプロイメントとテストの作成


これで、データ・サイエンス・モデル・デプロイメントを作成できます。詳細については、このGithubの記事を参照してください。

推論


モデル・デプロイメントがアクティブ状態になったら、それをHTTPリクエストで起動してLLMと対話できます。


Llama 3.1モデルのプロンプト


モデルの指示バージョンでは、次のプロンプト・テンプレートが使用されます。


<|begin_of_text|><|start_header_id|>system<|end_header_id|>

Cutting Knowledge Date: December 2023
Today Date: 26 Jul 2024

You are a helpful assistant<|eot_id|><|start_header_id|>user<|end_header_id|>

<prompt> <|eot_id|><|start_header_id|>assistant<|end_header_id|>


次の例では、Pythonコードを使用します。


data = requests.post(
    endpoint,
    json={
        "model": "odsc-llm",
        "prompt": Template(
            """"<|begin_of_text|><|start_header_id|>system<|end_header_id|>

Cutting Knowledge Date: December 2023
Today Date: 23 Jul 2024

You are a helpful assistant<|eot_id|><|start_header_id|>user<|end_header_id|>

$prompt<|eot_id|><|start_header_id|>assistant<|end_header_id|>"""
        ).substitute(
            prompt="What amateur radio band can a general class license holder use?"
        ),
        "max_tokens": 250,
        "temperature": 0.7,
        "top_p": 0.8,
    },
    auth=ads.common.auth.default_signer()["signer"],
    headers={},
).json()


モデルでは、次の出力が生成されます。


A General Class amateur radio license holder in the United States can use
frequencies on 80 meters (3.5 MHz), 40 meters (7 MHz), 20 meters (14 MHz),
and 15 meters (21 MHz) bands, as well as the 10 meter band (28-29.995 MHz).



まとめ


OCI Data Scienceサービス上にLlama-3.1 405 Bを導入することで、最新のオープンソースのAIテクノロジーを活用し、アプリケーションで使用することができます。また、最適化のためのインフラストラクチャの柔軟性とエンタープライズグレードのセキュリティとプライバシーも備えています。


Oracle Cloud Free Trialをお試しください。300USドルの無料クレジットが付いた30日間のトライアルでは、Oracle Cloud Infrastructure Data Scienceサービスにアクセスできます。詳細は、次のリソースを参照してください。

コメント

このブログの人気の投稿

Oracle RACによるメンテナンスのためのドレインとアプリケーション・コンティニュイティの仕組み (2023/11/01)

Oracle APEXのInteractive Gridで、Oracle Formsと比較して、重複行の検証を制御/通過させる方法 (2022/07/21)

Oracle APEX 24.1の一般提供の発表 (2024/06/17)