Google Colab + CTranslate2 による Rinnaの高速推論を試す
「Google Colab」と「CTranslate2」による Rinnaの高速推論を試したのでまとめました。
1. CTranslate2
「CTranslate2」は、Transformerモデルを効率的に推論するためのC++ および Python ライブラリです。
2. モデルの変換
「Google Colab」でのモデル変換の手順は、次のとおりです。
(1) Googleドライブのマウント。
変換したモデルを保存したいのでGoogleドライブをマウントします。
# Googleドライブのマウント
from google.colab import drive
drive.mount("/content/drive")
(2) 作業フォルダへの移動
# 作業フォルダへの移動
import os
os.makedirs("/content/drive/My Drive/work", exist_ok=True)
%cd "/content/drive/My Drive/work"
(3) インストール。
# パッケージのインストール
!pip install ctranslate2
!pip install sentencepiece transformers
(4) モデルの変換。
CTranslate2フォーマットに変換します。
!ct2-transformers-converter \
--model rinna/japanese-gpt-neox-3.6b-instruction-ppo \
--quantization int8 \
--output_dir ./rinna_ppo
パラメータは、次のとおりです。
ハイメモリ必要で、2分ほどかかりました。
出力フォルダに次の3つのファイルが生成されます。
3. 推論
「Google Colab」での推論の手順は、次のとおりです。
(1) ジェネレーターとトークナイザーの準備
import ctranslate2
import transformers
import torch
# ジェネレーターとトークナイザーの準備
device = "cuda" if torch.cuda.is_available() else "cpu"
generator = ctranslate2.Generator("./rinna_ppo", device=device)
tokenizer = transformers.AutoTokenizer.from_pretrained(
"rinna/japanese-gpt-neox-3.6b-instruction-ppo", use_fast=False)
(2) 推論。
# プロンプトの準備
prompt = "ユーザー: まどか☆マギカでは誰が一番かわいい?<NL>システム: "
# 推論の実行
tokens = tokenizer.convert_ids_to_tokens(
tokenizer.encode(prompt, add_special_tokens=False)
)
results = generator.generate_batch(
[tokens],
max_length=64,
sampling_topk=10,
sampling_temperature=0.7,
include_prompt_in_result=False,
)
text = tokenizer.decode(results[0].sequences_ids[0])
print(text)
私は鹿目まどかが一番かわいいと思います。彼女はとてもかわいくて、優しくて、思いやりがあります。また、まどかはとても強いです。彼女はとても強い力を持っており、とても強いです。彼女は自分の運命に逆らって、自分の力を使って立ち向かっていきます。彼女はとても強いです
generator.generate_batch()のパラメータは、次のとおりです。
参考
この記事が気に入ったらサポートをしてみませんか?