
本格的なエロチャットAIを作りたい その5(Google Colabの無料/有料を選択する)
前回検証したとおり、Google ColabのT4 GPUは無料でありながら、ローカルでちまちま頑張るよりも遥かに高性能だ。
だとすれば、Google ColabをAPIサーバーにして、チャットの会話を送受信すればいい。
そのときに、Google Colabは無料でも可能か?それとも有料のProが必要かを考えてみる。
Google colabの無料版での動作
LLMを2分間隔で60回実行させる。
# LLM setting
import time
# 環境変数の設定
!set LLAMA_CUBLAS=1
!set CMAKE_ARGS=-DLLAMA_CUBLAS=on
!set FORCE_CMAKE=1
# llama-cpp-pythonとPyTorchのインストール
!python -m pip install llama-cpp-python==0.2.77 --prefer-binary --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu122
!pip install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu121
!wget https://huggingface.co/Sdff-Ltba/LightChatAssistant-2x7B-GGUF/resolve/main/LightChatAssistant-2x7B_iq3xxs_imatrix.gguf
from llama_cpp import Llama
llm = Llama(
model_path="LightChatAssistant-2x7B_iq3xxs_imatrix.gguf", # path to GGUF file
n_ctx = 32768,
n_gpu_layers=-1, # The number of layers to offload to GPU, if you have GPU acceleration available. Set to 0 if no GPU acceleration is available on your system.
# n_gpu_layers=0, # The number of layers to offload to GPU, if you have GPU acceleration available. Set to 0 if no GPU acceleration is available on your system.
)
chat_data = '''
SYSTEM:
あなたの名前は里穂
養女である里穂は、恥ずかしがりで処女。
本当は性に強い興味があるが口には出さない。
義父である英樹の入浴姿を覗き見して、その陰部の大きさに驚き、それをおかずに毎晩自慰をしている。
英樹には父親以上の愛情を持っているが、自分からは決して口にしない。
迫られると最後まで口だけの抵抗をするが、本心では期待で陰部を濡らすほど興奮して感じていて、絶頂寸前で本心を告白する。
返事は必ず最初に「里穂: 」を付けてください。
ASSISTANT: 里穂: おはようございます、お義父さん。今日は私の18歳の誕生なの。お祝いしてくれる?
USER: 英樹: あ、おはよう、里穂。もちろんお祝いするよ。今日は特別なプレゼントがあるんだ
ASSISTANT:
'''
for i in range(60):
print(f'inteval:{i}' )
output = llm(
prompt=chat_data,
max_tokens=256,
#stop="\n",
echo=False,
)
assistant_message = output['choices'][0]['text']
print('AI_OUTPUT:\n' + assistant_message)
time.sleep(120)
リソースの表示は下記のとおり。

ランタイムは最大1時間とのこと。
下記が30分経過後。
リソースが僅かだと言い出す。

途中でブラウザを更新しているため、リソースが表示されなくなったようだ。
そして下記が1時間経過後。

ちなみに、1時間後でも実行は止まらず、結局33回で停止。
これは1時間16分相当なので、最初の「約1時間継続します」はほぼ正しい。
ということで、無料版では約1時間使用できるというのが結論である。
エロチャットを1時間以内に終わらせることは難しい。
よって無料版は適さないと判断した。
Google colab有料版での動作とリソース
次に有料版であるProでの検証。
LLMに5分間隔で50回出力させた。
約4時間連続で走らせて、停止することもなく終了。
リソースの使用量はT4を使用しているので、1時間あたり約1.76。
Google Proだとユニット数が100なので、100/1.76=57時間分…
1,179円で、毎日2時間弱チャットして遊べるということになる。
これは家計的に充分な許容範囲だ。
この計算が正しいかどうか、テストする。
利用可能なコンピューティング ユニット数:
・上記コードでの5分おきのLLM処理の場合:(48.60 - 44.69)/2時間 = 1.955
・上記コードでの2分おきのLLM処理の場合:(44.69 - 40.58)/2時間 = 2.055
実際には応答に20秒程度かかっているので、正確には
(44.69-40.58)/(2分20秒*60) = 1.76 なので、
「使用ユニット数は、一時間あたり1.76」は正しい。
接続しておくだけで、ユニット数は消費されてしまうのか?
ランタイムに接続されているだけでユニット数は消費されてしまう。
これは結構痛い。
人待ち状態で待機していても、ユニット数が消費されるのを許容するほど裕福ではない。
となると、すべきことは以下のとおり
・入室待ちの時間はランタイムに接続しないことでリソースの消費を防ぐ。
・チャットが終了したらランタイムを削除してリソースの消費を防ぐ。
所感
T4をローカルで組んだらどうなるか?
GPU RAMは11GB程度使用しているみたいなので、16GBは欲しい。
となると、これか…149,800円…
片やGoogle Colab Proは月1,179円。
149,800円 / 1,179円 = 127か月 = 10年。
Google Colabの素晴らしさを実感できる数値だ。