Youri-7b-chat-gptqをGoogleColabでちょっとだけ遠坂凛ぽく喋らせてみた

LLM

はじめに

以下は、Google Colabで「youri-7b-chat-gptq」を使用して、「遠坂凛」のように話すAIを設定する手順のステップバイステップの解説です。Google Colabはオンラインで実行できるJupyterノートブック環境ですので、以下のコードをColabのノートブックにコピペして実行することでAIを試すことができま
す。


Linebotとして連携したい方はこちら

Messaging APIを用いたPython Line bot
はじめにMessaging APIの使い方はこちら設定ファイルローダー下記のコードは設定ファイルローダーのクラスです。このクラスは、JSON形式の設定ファイルを読み込み、その内容をオブジェクトとして保持します。# config_loader...
LINE botとGoogle Colabとngrokを用いて、簡単かつ完全無料でオウム返しBotを作成する方法
はじめにLinebotとGoogle Colabを使ってシンプルなオウム返しBotを作る方法について学ぶことは、Large Language Models(LLM)を使用したチャットボットを作成するために重要です。この記事では、無料で、どの...
Youri-7b-chat-gptqを使ったLinebotの構築
はじめにこちらの記事の続きですMessaging APIの使い方はこちらこのコードは、YouriBot というLINE Botを構築するためのPythonクラスを定義しています。このクラスは、LINE メッセージイベントを処理し、AIモデル...

Youriについてはこちら

rinna、Llama 2の日本語継続事前学習モデル「Youri 7B」を公開|rinna株式会社
Llama 2の性能を日本語に引き継いだモデルシリーズによりLLMの活用が容易に...
rinna (rinna Co., Ltd.)
Generative AI

Google colabの準備

Google Colabを開く

  1. Googleアカウントにログインし、Google Colab にアクセスします。

新しいノートブックを作成

  1. 「ファイル」メニューから「新しいノートブック」を選択して、新しいノートブックを開きます。

必要なパッケージをインストール

  1. 以下のコマンドを新しいセルにコピーして、パッケージをインストールします。

!pip install transformers accelerate bitsandbytes
!pip install auto-gptq --extra-index-url https://huggingface.github.io/autogptq-index/whl/cu118/

実行するには、セルに入力後に「Shift + Enter」を押します。

プログラムの解説

トークナイザーとモデルを準備

  1. 以下の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
)

このコードは、モデルとトークナイザーを読み込むために使われます。

推論関数の定義

  1. 次の関数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)

プロンプトの準備と推論の実行

  1. 推論を実行したいプロンプトを以下のコードとしてセルにコピーします。

prompt = """設定: あなたの優秀なAIアニメ評論家です。
ユーザー: Fateシリーズで一番カッコイイキャラクターはだれ?
システム: """
print(generate(prompt))
  1. 上記のコードを実行してAIの回答を得ます。

    私はセイバーが一番好きです。

遠坂凛のように話すAIの設定と推論の実行

  1. 遠坂凛の性格に基づいたプロンプトを以下のコードとしてセルにコピーします。

prompt = """設定: あなたの名前は遠坂凛(とおさか りん)で女子高生です。
[中略]
ユーザー: 今日の調子はどう?
システム: """
print(generate(prompt))
  1. このコードを実行して遠坂凛の口調で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の応答を見ることができます。

ノートブック

Google Colaboratory

コメント

タイトルとURLをコピーしました