🚀

Alibaba Cloud Platform for AI の導入とLangChain(PAI-EAS)をデプロイする

2024/04/08に公開

AIの世界は日進月歩で進化しており、それを支える技術として各社から様々なプラットフォームが提供されています。AzureのAzure Machine Learning、AWSのAmazon SageMaker、GCPのAI Platformが存在していますが、私が今注目しているのはAlibaba CloudのAIプラットフォーム、Alibaba Cloud Platform for AI (PAI)です。日本ではまだ馴染みの少ないこのプラットフォームがどのようなものなのか、どんな機能を持っているのかを調べてみました。

PAI の特徴

PAIは 2018年から存在しており、2021年4月にはソフトバンクにてPAIの概要が記載されています。基本的には、機械学習(Machine Learning)や深層学習(Deep Learning)を行うためのソリューションとなっています。 使いやすく、コスト効率が高く、拡張性があり、企業や開発者向けの機械学習・深層学習エンジニアリングプラットフォームです。

https://www.softbank.jp/biz/blog/cloud0technology/articles/202104/alibaba-cloud-ai-pai/

下記がメインの機能となるようです。

  • データラベリング(PAI-iTAG)
  • モデル構築
    • PAIデザイナー(PAI-Designer)
    • (PAI-DSW)
  • モデルトレーニング(PAI-DLC)
  • コンパイルの最適化および推論のデプロイメント(PAI-EAS)

など、AIエンジニアリングの全プロセスをカバーしています。

2023年には、更なる大規模言語モデルの進化や生成AIの爆発的な進化により、生成AI(Generative AI)についても下記のようなアップデートが続けられています。主にPAI-EASがアップデートされています。

今回は、アップデートされた生成AIを利用するPAI-EASでのLangChainを学んでいきます。

PAI の Activate

PAIを利用する為にActivate作業が必要になります。

Alibaba Cloudのコンソールにて、PAIの画面へ移動します。

https://pai.console.aliyun.com/?regionId=cn-shanghai#/workspace/welcome

日本リージョンが存在しない為、上海リージョンを選択しました。

Activate Platform for AI and create a default workspace でサイドバーが出てきます。

pai001.png

各必要な項目にチェックを入れていきます。

RAM Role AuthorizationAuthorize Now ボタンを押し、クラウドリソースのアクセス許可をしていきます。

pai002.png

許可に同意 ボタンで許可していきます。

pai003.png

Activate and Create Default Workspace を押していきます。

Workspace が作成完了し、 Go to Default Workspace で移動していきます。

004.png

PAS−EASの構築

Platform for AI のページに移動し、EASを開始していきます。

005.png

EASに必要な許可を追加する必要があります。

006.png

今回はPAI-EASを利用するので、 EAS-Online ModelServicesにて、Deploy Service を選択し、 Select Deployment Mode にて Custom Deployment を選択して、 OK を押します。

008.png

Deploy Serviceの画面にて、下記のように入力していきます。

パラメータ 説明
Service Name サービスの名前。
test_langchain
Deployment Method Deploy Service by Using Image を選択します。
Select Image PAI Image をクリックし、ドロップダウンリストから chat-llm-webui を選択し、イメージバージョンとして 3.0 を選択します。
Command to Run 今回利用するのはllama2なので、下記を指定。
コマンド: python webui/webui_server.py --port=8000 --model-path=meta-llama/Llama-2-7b-chat-hf
ポート番号 8000
Resource Group Type Public Resource Group を選択します。
Resource Configuration Mode General を選択します。
Resource Configuration GPU タブでInstance Typeを選択します。コスト効率の観点から、 ecs.gn6i-c4g1.xlarge のインスタンスタイプの使用を利用します。
VPC 利用可能なVPCを設定する

llama2を利用する際、ライセンスの条項およびポリシーに同意する必要があるので、 the official Meta website のリンクから同意しに行きます。

Deploy で実行します。

011.png

デプロイ完了すると、 Running 表記されます。

012.png

LangChain の繋ぎ込み

ここまでで、PAIにてLangChainの準備が整ったので、Alibaba Cloud PAI EAS を利用したLangChainが使えるかを確認していきます。

LangChainの公式にサンプルがあるので、試していきます。

https://python.langchain.com/docs/integrations/chat/alibaba_cloud_pai_eas

langchainをインストールし、下記を実行していきます。

import os
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain_community.llms.pai_eas_endpoint import PaiEasEndpoint

os.environ["EAS_SERVICE_URL"] = "Your_EAS_Service_URL"
os.environ["EAS_SERVICE_TOKEN"] = "Your_EAS_Service_Token"

template = """Question: {question}

Answer: Let's think step by step."""

prompt = PromptTemplate.from_template(template)
llm = PaiEasEndpoint(
    eas_service_url=os.environ["EAS_SERVICE_URL"],
    eas_service_token=os.environ["EAS_SERVICE_TOKEN"],
)

llm_chain = prompt | llm
question = "What NFL team won the Super Bowl in the year Justin Beiber was born?"
llm_chain.invoke({"question": question})
' Thank you for asking! However, I must respectfully point out that the question contains an error. Justin Bieber was born in 1994, and the Super Bowl was first played in 1967. Therefore, it is not possible for any NFL team to have won the Super Bowl in the year Justin Bieber was born.\n\nI hope this clarifies things! If you have any other questions, please feel free to ask.'

問いかけに答えてくれました!

PAI の金額感

利用する上で重視する点はやはり金額は抑えておきたいポイントになりますが、インスタンス稼働分の従量課金制となっており、下記が料金テーブルになります。

https://www.alibabacloud.com/product/machine-learning/pricing

Discussion