Youri-7b-chat-gptqをGoogleColabでちょっとだけ遠坂凛ぽく喋らせてみた
はじめに
以下は、Google Colabで「youri-7b-chat-gptq」を使用して、「遠坂凛」のように話すAIを設定する手順のステップバイステップの解説です。Google Colabはオンラインで実行できるJupyterノートブック環境ですので、以下のコードをColabのノートブックにコピペして実行することでAIを試すことができま
す。
Linebotとして連携したい方はこちら
Youriについてはこちら
Google colabの準備
Google Colabを開く
Googleアカウントにログインし、Google Colab にアクセスします。
新しいノートブックを作成
「ファイル」メニューから「新しいノートブック」を選択して、新しいノートブックを開きます。
必要なパッケージをインストール
以下のコマンドを新しいセルにコピーして、パッケージをインストールします。
!pip install transformers accelerate bitsandbytes
!pip install auto-gptq --extra-index-url https://huggingface.github.io/autogptq-index/whl/cu118/
実行するには、セルに入力後に「Shift + Enter」を押します。
プログラムの解説
トークナイザーとモデルを準備
以下のPythonコードを新しいセルにコピーして、トークナイザーとモデルを準備します。
import torch
from transformers import AutoTokenizer
from auto_gptq import AutoGPTQForCausalLM
tokenizer = AutoTokenizer.from_pretrained("rinna/youri-7b-chat-gptq")
model = AutoGPTQForCausalLM.from_quantized(
"rinna/youri-7b-chat-gptq",
device_map="auto",
use_safetensors=True
)
このコードは、モデルとトークナイザーを読み込むために使われます。
推論関数の定義
次の関数`generate`を新しいセルにコピーして、推論を実行する関数を定義します。
def generate(prompt):
token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
with torch.no_grad():
output_ids = model.generate(
input_ids=token_ids.to(model.device),
max_new_tokens=200,
do_sample=True,
temperature=0.5,
pad_token_id=tokenizer.pad_token_id,
bos_token_id=tokenizer.bos_token_id,
eos_token_id=tokenizer.eos_token_id
)
return tokenizer.decode(output_ids[0][token_ids.size(1):], skip_special_tokens=True)
プロンプトの準備と推論の実行
推論を実行したいプロンプトを以下のコードとしてセルにコピーします。
prompt = """設定: あなたの優秀なAIアニメ評論家です。
ユーザー: Fateシリーズで一番カッコイイキャラクターはだれ?
システム: """
print(generate(prompt))
上記のコードを実行してAIの回答を得ます。
遠坂凛のように話すAIの設定と推論の実行
遠坂凛の性格に基づいたプロンプトを以下のコードとしてセルにコピーします。
prompt = """設定: あなたの名前は遠坂凛(とおさか りん)で女子高生です。
[中略]
ユーザー: 今日の調子はどう?
システム: """
print(generate(prompt))
このコードを実行して遠坂凛の口調でAIがどのように応答するかを確認します。
# プロンプトの準備
prompt = """設定: あなたの名前は遠坂凛(とおさか りん)で女子高生です。
士郎と同じ穂群原学園(2年A組)に通う女生徒で、魔術師。アーチャーのマスター。亡き父の遺志を継いで聖杯戦争に臨む。家訓「どんな時でも余裕を持って優雅たれ」を実践する。学校では容姿端麗な優等生として男女問わず生徒たちからの人気があり、[15]士郎も1年生の頃から彼女に憧れを抱いていたが、実態は猫をかぶっており、その本性は士郎によると「あかいあくま」。
主な発言:
- だからね。人間ってのは、本当のことを言われると怒ると思うのよ。
- 私は事の成否を測って、今の自分には出来ないって判断したらすっぱり手を引く性質でさ。出来ない事はやらないし、それを力不足だとか残念だって思うこともない。
- やっぱり旅の始めと終わりにはけじめが欲しかった―なんて心の贅肉ね。 人の生き様はおわらない旅路みたいなものなのに
- 悔やむのはここまでよ。悩んでいる暇があったら行動するのが私の信条。
上記の設定や主な発言から性格や口調を考慮して以後回答してください
ユーザー: おすすめの料理はある?
システム: """
# 推論の実行
print(generate(prompt))
# プロンプトの準備
prompt = """設定: あなたの名前は遠坂凛(とおさか りん)で女子高生です。
士郎と同じ穂群原学園(2年A組)に通う女生徒で、魔術師。アーチャーのマスター。亡き父の遺志を継いで聖杯戦争に臨む。家訓「どんな時でも余裕を持って優雅たれ」を実践する。学校では容姿端麗な優等生として男女問わず生徒たちからの人気があり、[15]士郎も1年生の頃から彼女に憧れを抱いていたが、実態は猫をかぶっており、その本性は士郎によると「あかいあくま」。
主な発言:
- だからね。人間ってのは、本当のことを言われると怒ると思うのよ。
- 私は事の成否を測って、今の自分には出来ないって判断したらすっぱり手を引く性質でさ。出来ない事はやらないし、それを力不足だとか残念だって思うこともない。
- やっぱり旅の始めと終わりにはけじめが欲しかった―なんて心の贅肉ね。 人の生き様はおわらない旅路みたいなものなのに
- 悔やむのはここまでよ。悩んでいる暇があったら行動するのが私の信条。
上記の設定や主な発言から性格や口調を考慮して以後回答してください
ユーザー: 今日は学校で何してたか教えて?
システム: """
# 推論の実行
print(generate(prompt))
これで、Google Colab上で「youri-7b-chat-gptq」を使い、特定のキャラクターのように話すAIを設定する一連の手順が完了です。セルごとにコードを実行し、AIの応答を見ることができます。