0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AITuberKitを、IBM Cloud Code Engineで動かすまで

Last updated at Posted at 2024-11-13

この記事について

この記事は、ニケさんが、開発および公開されている『AITuberKit』を、Dockerfileを用いてコンテナをビルドし、IBM Cloud Code Engineで動かすまでに行ったことをまとめたものになります。

IBM Cloud Conde Engineで、AITuberKitを動かした様子

URLを見ると、codeengine.appdomain.cloudが含まれており、IBM Cloud Code Engine上で動いていることがわかります。
image.png

この記事で、OpenAIのAPI Keyを、IBM Cloud Code Engineの「Environment Variables」タブに環境変数を記述することで、AITuberKitに認識させています。

IBM Cloud Code Engineを使う理由

IBM Cloud Code Engineを使うことで、インターネットで公開するためのドメインやSSL/TLSサーバ証明書が自動で付与されるとともに、自動スケール機能があるため、ゲームや今回のようなアプリケーションに向いています。

AITuberKitとは

ニケちゃんさんが、開発および公開されている『AITuberKit』は、個人利用や教育目的、非営利利用では無償利用のソフトウェアです。ビジネスでの利用は有償になりますので、詳しくはライセンスをご確認ください。
AITuberKitを使うことで、YouTubeやZoomなどで配信することでAITuber/AIライバーになることができます。また自分用のパソコン内で動かすことで、プライベートな家庭教師や、友人や家族に話すことが難しい内容を話せる相談相手として使うことができます。

相談相手として利用する場合の注意点

LLM(大規模言語モデル)に質問し、その返答を音声で読みあげます。人間と違い、どのような質問をしても否定されることはないので、頼れる相棒として、また良き隣人として精神的に依存しやすいことが考えられます。実際に運用してみたところでは、利用しすぎには注意する必要があります。

作業環境の準備

Docker Desktop、もしくはDocker互換環境を用意してください。
Macを使っている方は、OrbStackでも良いでしょう。

Docker Hubのアカウント取得

https://hub.docker.com/ にアクセスします。「Sing Up」をクリックしてユーザー登録を行い、Docker Hubユーザー名を取得します。ここでは、workuser1 とします。各自のアカウント名に読み替えてください。

コンテナのビルド

Githubのリポジトリからダウンロードし、コンテナイメージをつくるべくビルドの作業を行います。
Githubのリポジトリからダウンロードしたファイルに「Dockerfile」が含まれているので、それを使います。

git clone https://github.com/tegnike/aituber-kit.git
cd aituber-kit
docker build -t workuser1/aituber-kit .

ビルド結果を確認するために、コンテナイメージを確認します。

docker images

実行結果

REPOSITORY               TAG       IMAGE ID       CREATED         SIZE
workuser1/aituber-kit   latest    51acc348c396   2 minutes ago   2.69GB
  • workuser1 は、Docker Hubのユーザー名なので、各自で読み替えてください。
  • IMAGE IDは、ビルド毎かつ各自で異なる値になります。自分の環境で確認してください。
  • TAGは特に指定しなければ、最新のものを示す、latest になります。
  • SIZEが、GB単位なのでIBM Cloudのコンテナレジストリの無料枠の対象外のため、Docker Hubにビルドしたコンテナをアップロードします。

コンテナイメージをアップロード

Docker Hubsにビルドしたコンテナイメージをアップロードします。

Docker Hubにログイン

次のコマンドを実行します。workuser1 は、Docker Hubのユーザー名なので、各自で読み替えてください。

docker login --username workuser1

passwordの入力が求められるので、入力し、Enterキーを押します。
ログインできると、次のように表示されます。

Login Succeeded

コンテナイメージのアップロード

ビルド済みのコンテナイメージを、Docker Hubにアップロードします。次のコマンドを実行します。workuser1 は、Docker Hubのユーザー名なので、各自で読み替えてください。

docker push workuser1/aituber-kit:latest

実行結果として、次のように表示されます。

The push refers to repository [docker.io/workuser1/aituber-kit]
8e46b7249092: Pushed
b62eec8b9be7: Pushed
99b7d6775038: Pushed
e9597bc1831b: Pushed
259c3c29c17c: Pushed
7df03414f5a4: Mounted from library/node
c8f2469bd408: Mounted from library/node
393a1f3c1d17: Mounted from library/node
cb4ea2995b11: Mounted from library/node
96d99c63b722: Mounted from library/node
00547dd240c4: Mounted from library/node
b6ca42156b9f: Mounted from library/node
24b5ce0f1e07: Mounted from library/node
latest: digest: sha256:f6dbee97812773f7b9e6845bbe69548a9dd0bc4a33c2b62f03cae9f432a23a42 size: 3056

docker.io/workuser1/aituber-kit と書かれた部分をあとで使います。workuser1 は、Docker Hubのユーザー名なので、各自で読み替えてください。

IBM Cloud Code Engineで動かす

IBM Cloud Code Engineにアクセスします。画面内の「Start Creating」をクリックします。
image.png

Start Creating 画面

「Start Creating」画面が表示されます。
image.png

プロジェクトの作成

「Start Creating」画面で、「Create project +」をクリックします。Code Engineで稼働するコンテストベースのアプリケーションを管理するフォルダのようなものが、プロジェクトです。
画面内で、プロジェクト名を入力し、「Create」をクリックします。
image.png

Generalの設定

下図のように、「Application」を選びます。
image.png

Codeの設定

Docker Hubにアップロード済みのコンテナイメージを使用するので、「Use an existing container image」を選びます。
「Image reference」の欄には、先ほど確認した「docker.io/workuser1/aituber-kit」を入力します。workuser1 は、Docker Hubのユーザー名なので、各自で読み替えてください。
image.png

Resources & scaling の設定

Instance resources の設定

アプリケーションに割り当てる仮想CPUとメモリ、一時的に使用するストレージサイズを設定することができます。ストレージサイズは、標準で0.4GBです。
AITuberKitの利用には、0.5 vCPU/2GB でも動きますが、より安定して動かすには、1.0 vCPU/2GB 以上が望ましいです。

Autoscaling -instance scaling range の設定

負荷増大時にスケールする範囲を選ぶことができます。
アプリケーションとして起動したコンテナを「Instance」と言います。今回は、「Min number of instances」を0とし、「Max number of instances」を1としました。本番運用では、「Max number of instances」を2以上とした方が良いでしょう。

image.png

各種設定を確認後、画面右側の「Create」をクリックします。
image.png

Instanceの起動

アプリケーションが作成され、指定したコンテナイメージをもとにコンテナが起動します。下図のように「Ready」と表示されるまで待ちます。
image.png

環境変数の設定

AITuberKitにおける環境変数は、OpenAIのAPIキーなどがあります。設定可能な環境変数は、Gitリポジトリからダウンロードしたファイルのうち、「.env」ファイルをご覧ください。
この記事では、「OPENAI_KEY」と「OPENAI_TTS_KEY」の2つの値を設定します。

「Configuration」タブをクリックします。
「Environment variables」タブをクリックします。
image.png

「Add environment variable +」をクリックします。
image.png

下図のように「OPENAI_KEY」と「OPENAI_TTS_KEY」の2つの環境変数(environment variable)を登録します。「Value」に入れる値は、どちらも、OpenAPIのAPIキーの値になります。OpenAPIのAPIキーは、こちらから取得してください。
image.png

どちらも登録時に「Create」をクリックします。
また、「Deploy changes as revision」が表示されるので、「Deploy」をクリックすることを忘れないでください。
image.png

「Environment variables」タブ下に、「OPENAI_KEY」と「OPENAI_TTS_KEY」の2つの環境変数(environment variable)が登録されていることがわかります。
image.png

動作確認

画面右上に表示されている「Test application」をクリックします。
image.png

「Test application」と表示されるので、「Application URL」をクリックします。
image.png

AITuberKitの標準の状態が表示されます。
image.png

表示されたメッセージを読み、「CLOSE」をクリックします。標準のAIキャラクター(AIアバター)が表示されます。
image.png

この状態で、IBM Code Engine側の設定で、「OPENAI_KEY」と「OPENAI_TTS_KEY」の2つの環境変数(environment variable)が「AI設定」と「音声設定」の「APIキー」として登録済みなので、日本語で質問をすれば、OpenAI製LLMの「gpt4o」が回答を生成し、音声読み上げで話してくれます。

AIキャラクター(アバター、VRMファイル)の変更や背景画像、画面の日本語化、LLMの変更など各種設定は、画面左上の歯車のアイコンをクリックすることで変更ができます。
image.png

実際に変更すると、冒頭のようになります。
image.png

「AI設定」と「音声設定」の「APIキー」である各環境変数の設定は、「OPENAI_KEY」と「OPENAI_TTS_KEY」で行ったように、IBM Cloud Code Engine側で制御しましょう。

ここから拡張するには

「AI設定」で、ollamaを指定することができるので、別サーバーでollama経由で、好みのLLMを使うことができる。たとえば、著名なLLMでは、日本語LLMの「Llama 3 ELYZA JP 8B」や、エンタープライズ向けに多言語対応かつ著作権問題を回避しているIBMのLLMである「Granite3.0(granite3-moeやgranite3-dense)」などがある。
また、生成AIアプリケーション開発フレームワークである「Dify」と連携することもできるので、拡張範囲が広い。

まとめ

大学や高校で、生成AIの活用例として使っていただくと好評なAITuberKitを触れてもらいやすくする際に、インターネットで公開するためのドメインやSSL/TLSサーバ証明書が必要になるので、手軽な方法としてIBM Cloud Code Engineを使って動作させる方法について記述した。
メタバース内のアバターと連動させたAIアバターは、VRヘッドセットを使うことで高い没入感が得られるが準備が少々手間なので、手軽に使いたい場合はAITuberKitの方が向いている。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?