Amazon Web Services ブログ

AWS Marketplace に初掲載の日本語 LLM ! オルツの LHTM-OPT を利用する手順解説

本記事は、以下 4 名による共著です。

  • 株式会社オルツ 経営管理部 技術本部付アシスタント 高橋 亜美
  • 株式会社オルツ AI Solutions 事業部 PoC エンジニア 竹内 慎修
  • 株式会社オルツ 経営企画部 マネージャー 西澤 美紗子
  • アマゾン ウェブ サービス ジャパン合同会社 機械学習パートナーソリューションアーキテクト 本橋 和貴

大規模パラメータを持つ大規模言語モデル (LLM) によるビジネスの変革が期待される一方で、その利用には膨大な計算リソースとエネルギーを必要とするため、環境に対する負荷の増大が懸念されています。そのため、軽量でありながら大規模モデルと同等の精度を実現するための小規模パラメータモデルの研究が活発化しています。その流れで、P.A.I.®️ (パーソナル人工知能) をはじめ、AI クローン技術でつくり出すパーソナル AI の開発および実用化を行う株式会社オルツは、軽量型大規模言語モデル LHTM-OPT (ラートム・オプト) を 2023 年 10 月にリリースしました。また、LHTM-OPT は、2024 年 3 月に、AWS Marketplace 上における世界初の日本語 LLM として公開されました。AWS Marketplace からモデルを購入することで、利用者は大規模言語モデルや機械学習の専門知識がなくても、簡単に LHTM-OPT を活用したアプリケーションやサービスを構築できます。

以下では、AWS Marketplace に出品されている LHTM-OPT を Amazon SageMaker にデプロイして推論を実行する方法を紹介します。

LHTM-OPT とは

LHTM-OPT (ラートム・オプト) とは、オルツが開発した、日本語専用のプライベートな軽量型大規模言語モデルです。LHTM-OPT はオープンデータの学習だけでなく、オルツの独自の指示データや対話データのデータセットも利用し、高い回答精度を達成しています。2023 年 10 月のリリース以降、日本国内の様々なアプリケーションで利用されています。パラメータ数が最適化された LLM であるため、小規模 GPU マシンでも高速の推論、回答生成が可能です。

2023 年 10 月にリリースした時点では、alt Developer API 利用とオンプレミスの場合のみデプロイが可能でした。今回、AWS Marketplace に公開することにより、AWS の機械学習開発運用プラットフォームである Amazon SageMaker に簡単にデプロイできるようになりました。

本記事では 7B パラメータの LHTM-OPT バージョン 1.0 について解説します。このモデルは、2023 年 10 月リリース時点では、日本語 LLM を評価する Rakuda ベンチマークにおいて、日本語商用プライベート LLM として最高性能を記録しました。また、日本語言語理解ベンチマーク「JGLUE (Japanese General Language Understanding Evaluation)」の 8 タスク平均においても、商用モデルとして国内最高スコア 56.12 を記録しました (LHTM-OPT の JGLUE 主要 4 タスク平均のスコアは 75.08 です)。これは同じサイズの競合モデルに比べて高い数値となっています。

AWS Marketplace とは

AWS Marketplace は、アマゾン ウェブ サービス (AWS) 上で動作する多種多様なサードパーティ製ソフトウェア、データ、サービスを見つけ、購入し、デプロイ、管理するためのデジタルカタログです。セキュリティ、ネットワーキング、ストレージ、機械学習、IoT、ビジネスインテリジェンス、データベース、DevOps など、幅広いカテゴリーの製品が掲載されています。ユーザーは AMI (Amazon Machine Image) や SaaS など様々な形式で提供される製品を選択し、数回のクリックでこれらのソリューションを簡単に起動できます。無料トライアル、時間単位、月単位、年単位、複数年、ライセンス持ち込み (BYOL) モデルなど、柔軟な料金オプションもあり、すべて AWS のひとつの請求書で一括して支払いができます。AWS Marketplace を利用することで、ビジネスソリューションの構築や運用に必要なソフトウェアの調達にかかる時間と手間を大幅に削減できます。

AWS Marketplace には機械学習製品も豊富に取り揃えられています。すぐ利用できる事前学習済みモデルパッケージや、独自のデータセットを用いてファインチューニング可能なアルゴリズムといった機械学習ソリューションが提供されており、機械学習の専門知識がなくても、簡単に機械学習を活用したアプリケーションやサービスを構築できます。画像認識、自然言語処理、予測分析、異常検知などの機能を持つ製品が用意されており、ユーザーは自社のビジネスニーズに合わせてそれらを選択し、Amazon SageMaker 上でモデルを学習、デプロイすることができます。近年では LLM の出品も増えており、AWS Marketplace の機械学習製品を活用することで、機械学習の導入にかかる時間とコストを大幅に削減でき、迅速にインテリジェントなアプリケーションを構築できるようになります。

AWS Marketplace で LHTM-OPT をサブスクライブする

AWS Marketplace に掲載されている LHTM-OPT を利用するには、初めに製品をサブスクライブします。LHTM-OPT の製品ページから製品の特徴などを確認した上で、サブスクライブしていきましょう。例えば、料金情報欄は以下の通りです。

pricing-information

図 1 : AWS Marketplace における LHTM-OPT の料金情報

AWS Marketplace の機械学習モデルパッケージ製品の料金欄にはソフトウェア料金 (Software Pricing) とインフラ料金 (Infrasstructure Pricing) が記載されています。LHTM-OPT は時間課金の料金設定になっており、ソフトウェア自体の料金としては 1 時間あたり 1.20 USD でご利用いただけます。それだけでなく、推論を実行する基盤としての SageMaker の利用料金もかかる点にはご注意ください。

料金などが確認できたら製品をサブスクライブしていきましょう。

  1. LHTM-OPT を利用する AWS アカウントにログインする。
  2. LHTM-OPT の製品ページを開き、右上の「Continue to Sucscribe」ボタンをクリックする。
continue-to-subscribe

図 2 : LHTM-OPT の製品ページからサブスクライブに進む

  1. 料金や EULA (End User License Agreement) を確認し、「Accept offer」ボタンをクリックする。
accept-offer

図 3 : 料金や EULA の確認

サブスクライブが完了したら “Thank you for subscribing. You can now use your product” と表示されます。これで製品を利用する準備ができました。次に、「Continue to configuration」ボタンをクリックし、お客様の AWS 環境内に LHTM-OPT をデプロイしていきます。

subscribed

LHTM-OPT のサブスクライブが完了した様子

サブスクライブした LHTM-OPT のデプロイ

「Continue to configuration」ボタンをクリックすると Configure and launch ページが開きます。ここでは、「Avalidable launch methods」に「SageMaker console」を指定します。「Region」では、デプロイ対象のリージョンを選択します。ここでは「Asia Pacific (Tokyo)」を選択しています。「Amazon SageMaker options」ではリアルタイム推論エンドポイントを作成するか、バッチ変換ジョブを実行するか選択できます。ここでは「Create a real-time inference endpoint」を選択しています。また、以降のコード内で使用するので、「Product Arn」をコピーし、メモしておいてください。

configure-and-launch

図 5 : Amazon SageMaker におけるデプロイオプションの指定

このまま GUI ベースでデプロイを進めることもできますが、以降では Python コードでモデルをデプロイする手順を紹介します。

まず、上記の製品の ARN (Amazon Resource Name) を変数に格納します。合わせて、必要なモジュールや SageMaker ランタイムのクライアントなどをセットアップします。

import json
import boto3
import sagemaker
from sagemaker import ModelPackage, get_execution_role

role = get_execution_role()
region = “ap-northeast-1”

sagemaker_session = sagemaker.Session()
sagemaker_runtime = boto3.client("runtime.sagemaker", region_name=region)

model_package_arn = (
  "<コピーした ARN に置き換えてください>"
)

次に、モデルのデプロイと推論エンドポイントの作成をします。デプロイするモデル名と SageMaker インスタンスタイプは必要に応じて変更することができます。ただし、インスタンスタイプはこちらの製品ページで推奨しているインスタンスタイプ一覧から選ぶ必要があります。

推論エンドポイントを作成するために 10 分ほど待ちます。

model_name = "lhtmopt"
real_time_inference_instance_type = "ml.p3.2xlarge"

# Create a deployable model from the model package.
model = ModelPackage(
    role=role,
    model_package_arn=model_package_arn,
    sagemaker_session=sagemaker_session,
)

# Deploy the model
predictor = model.deploy(
    initial_instance_count=1,
    instance_type=real_time_inference_instance_type,
    endpoint_name=model_name,
)

モデルのデプロイが終わるとリアルタイム推論エンドポイントの利用準備が完了し、推論を実行できるようになります。

LHTM-OPT で推論を実行する

LHTM-OPT で推論を実行する際、インプットは以下の 3 つの形式で渡すことができます。

方法 1 : デフォルトパラメータと質問

これは最もシンプルな形式です。ペイロードには質問を含むプロンプトのみを渡します。推論パラメータはデフォルトで設定されているものが利用されます。

payload = {
    "prompt": "質問:世界で最も高い山はなんですか?\n答え:",
}

方法 2 : 推論パラメータと質問

推論パラメータは任意の値を設定することもできます。ペイロードに推論パラメータのキーと値を含めることでパラメータをセットし、アウトプットをコントロールすることができます。

payload = {
    "prompt": "質問:世界で最も高い山はなんですか?\n答え:",
    "max_new_tokens": 50,
    "temperature": 0.7,
    "top_k": 40,
    "top_p": 0.9,
    "do_sample": True,
    "repetition_penalty": 1.2,
    "skip_prompt": True,
}

方法 3 : Llama 2 テンプレートでインプット

プロンプトは Llama 2 テンプレートの形式に構造化することも可能です。これにより、システムプロンプトを明示的に指定することができます。

payload = {
    "prompt": """[INST] <<SYS>>
あなたは優秀な日本人のアシスタントです。
<</SYS>>

世界で最も高い山はなんですか? [/INST]""",
    "temperature": 0.7,
    “top_k": 40,
}

推論を実行

上記のペイロードを用いて推論を実行するためには、次のような Python 関数を使用してください。

# real-time inference
def invoke_endpoint(endpoint_name, payload):
    response = sagemaker_runtime.invoke_endpoint(
        EndpointName=endpoint_name,
        ContentType=”application/json”,
        Body=json.dumps(payload),
    )

    return json.loads(response["Body"].read().decode("utf-8"))

次のコードで推論を実施し、結果を出力します。

result = invoke_endpoint(model_name, payload)
print(f"Result: {result}")

応答結果は次のようになります。

Result: {'message': 'OK', 'text': '世界で最も高い山は、ヒマラヤ山脈にあるエベレストです。標高8,848メートル(29,029フィート)です。チベット自治区とネパールの国境付近に位置します。1953年5月29日に英国隊が初登頂に成功したそうです。'}

LHTM-OPT の応用的なユースケース

LHTM-OPT は様々なユースケースに対応することができます。

例えば、LHTM-OPT は LangChain、LlamaIndex などのフレームワークと組み合わせることによって RAG、文章要約、文章生成などに応用することができます。LHTM-OPT のファインチューニングを実行するための API は公開していませんが、今後、提供する予定です。

オルツは現在、プライベート LLM の開発に関するコンサルティングや、企業独自のニーズに合わせたカスタマイズ、特定の業務に特化した LLM の開発支援も行っております。引き続き、日本社会における真の DX の実現に向けて、大規模言語モデルや生成 AI を活用したサービスの開発・提供に邁進し、社会に新たな価値を提供してまいります。

あと片付け

無駄な費用が発生しないよう、推論エンドポイントを利用しなくなった場合、次のコードで削除してください。

sagemaker_client = boto3.client(“sagemaker”, region_name=region)
sagemaker_client.delete_endpoint(model_name)
sagemaker_client.delete_endpoint_config(model_name)

まとめ

本記事では、AWS Marketplace から利用可能な軽量型大規模言語モデル LHTM-OPT 1.0 について紹介しました。LHTM-OPT の SageMaker におけるデプロイ方法と推論の実行方法についても解説しました。LHTM-OPT は小規模 GPU マシンでも実用的に動作する、パラメータ数が最適化された大規模言語モデルであり、様々なアプリケーションに適用可能です。ぜひ、LHTM-OPT 1.0 を AWS Marketplace からお試しください

オルツは、今後も継続して様々なベンチマークで評価を行い、モデルをブラッシュアップし、LHTM-OPT 2.0 や LHTM-3 などをリリースする予定です。また、本モデルを基盤として自動質問応答、議事録自動要約、情報抽出、会話理解、予測分析のデータ整理・作成などの高度な処理が必要な問題に対応可能な多くのアプリケーションを実装していきます。


著者について

kazmot本橋 和貴 (Kazuki Motohashi / @kmotohas) は、AWS Japan の機械学習パートナーソリューションアーキテクトです。AWS 上で機械学習関連のソフトウェアを開発しているパートナー企業の技術支援を担当をしています。好きなサービスは Amazon SageMaker です。週末は昔の RPG のリメイクゲームの攻略に勤しんでいます。博士 (理学)。