Alibaba Cloud Platform for AI の導入とLangChain(PAI-EAS)をデプロイする
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がアップデートされています。
-
EAS での LLM アプリケーションのデプロイ
Deploy LLM applications in EAS - Platform For AI - Alibaba Cloud Documentation Center
-
EAS での AI ペイント用の Stable Diffusion を迅速に導入する
Deploy Stable Diffusion by using EAS - Platform For AI - Alibaba Cloud Documentation Center
-
PAIとベクトルデータベースを利用し、LLMを基に高度な会話機能を実装
今回は、アップデートされた生成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
でサイドバーが出てきます。
各必要な項目にチェックを入れていきます。
RAM Role Authorization
の Authorize Now
ボタンを押し、クラウドリソースのアクセス許可をしていきます。
許可に同意
ボタンで許可していきます。
Activate and Create Default Workspace
を押していきます。
Workspace が作成完了し、 Go to Default Workspace
で移動していきます。
PAS−EASの構築
Platform for AI
のページに移動し、EASを開始していきます。
EASに必要な許可を追加する必要があります。
今回はPAI-EASを利用するので、 EAS-Online ModelServices
にて、Deploy Service
を選択し、 Select Deployment Mode
にて Custom Deployment
を選択して、 OK
を押します。
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
で実行します。
デプロイ完了すると、 Running
表記されます。
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