![見出し画像](https://assets.st-note.com/production/uploads/images/108520738/rectangle_large_type_2_29b645739b7e2d6540a7828881f6bda3.png?width=1200)
Rinna 3.6B の量子化とメモリ消費量
「Google Colabでの「Rinna 3.6B」の量子化とメモリ消費量を調べてみました。
1. 量子化とメモリ消費量
「量子化」は、LLMのメモリ消費量を削減するための手法の1つです。通常、メモリ使用量が削減のトレードオフとして、LLMの精度が低下します。
AutoTokenizer.from_pretrained()の以下のパラメータを調整します。
・torch_dtype : PyTorchのデータ型の指定。(torch.float16など)
・load_in_8bit : 8-bit精度でモデル読み込み。(bitsandbytes)
・load_in_4bit : 8-bit精度でモデル読み込み。(bitsandbytes)
・device_map : デバイス指定。(accelerate)
2. Colabでの確認
Colabでの実行手順は、以下のRLHFモデルと同様です。
速度は、モデル読み込み後、2回目の推論で速度計測しています。
(1回目は時間かかる)
load_in_8bit / load_in_4bit / device_map を利用するために、以下のパッケージもインストールする必要があります。
!pip install accelerate bitsandbytes
2-1. float32
設定なしで動作確認します。
◎ 設定
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
# トークナイザーとモデルの準備
tokenizer = AutoTokenizer.from_pretrained(
"rinna/japanese-gpt-neox-3.6b-instruction-ppo",
use_fast=False
)
model = AutoModelForCausalLM.from_pretrained(
"rinna/japanese-gpt-neox-3.6b-instruction-ppo",
device_map="auto",
)
◎ 結果
![](https://assets.st-note.com/img/1687043757876-NCXKxq3rsH.png?width=1200)
私は、ほむらが最も可愛いと思います。彼女はとても優しいです。彼女はまどかに魔法を教え、友達でした。彼女はとても強い力を持っています。彼女の外見もとても美しいです。彼女はとてもかわいくて強いです。彼女はとても魅力的だと思います。彼女はとても素晴らしいキャラクターです。彼女はとても美しく、優しくて強いです。彼女はとても良い親友です。彼女はとても強い存在感があり、とても賢いです。彼女はとても素晴らしく、強い力を持っています。彼女はとても素直で優しいです。彼女はとても強い存在感があり、とてもやさしいです。彼女はとても優しい心を持っているので、とても優れた
CPU times: user 12.6 s, sys: 145 ms, total: 12.7 s
Wall time: 4.63 s
2-2. float16
「torch_dtype=torch.float16」で動作確認します。
◎ 設定
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
# トークナイザーとモデルの準備
tokenizer = AutoTokenizer.from_pretrained(
"rinna/japanese-gpt-neox-3.6b-instruction-ppo",
use_fast=False
)
model = AutoModelForCausalLM.from_pretrained(
"rinna/japanese-gpt-neox-3.6b-instruction-ppo",
torch_dtype=torch.float16,
device_map="auto",
)
◎ 結果
![](https://assets.st-note.com/img/1687043622529-8AlQ4Jo7QA.png?width=1200)
ほむらです。彼女はとても魅力的で、とても複雑なキャラクターとして描かれています。彼女の主な焦点は、他の魔法少女たちとの友情や対立にあります。彼女は孤独な戦いを続けながら、多くの友人や仲間を持ち、強い意志を持っています。彼女はとても誇り高く、強い存在感があり、とてもかわいくて魅力的です。</s>
CPU times: user 6.88 s, sys: 91.5 ms, total: 6.97 s
Wall time: 5.27 s
2-3. 8-bit量子化
「load_in_8bit=True」で動作確認します。
◎ 設定
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
# トークナイザーとモデルの準備
tokenizer = AutoTokenizer.from_pretrained(
"rinna/japanese-gpt-neox-3.6b-instruction-ppo",
use_fast=False
)
model = AutoModelForCausalLM.from_pretrained(
"rinna/japanese-gpt-neox-3.6b-instruction-ppo",
load_in_8bit=True,
device_map="auto",
)
◎ 結果
![](https://assets.st-note.com/img/1687043604792-4KtTb5qoQR.png?width=1200)
ほむらです。彼女はとてもかわいく、才能があり、強い意志を持っているので、とても素敵です。彼女は友情や優しさ、そして悲しみも持っているので、素晴らしいキャラクターです。彼女はとても魅力的で、強い存在感があります。私は彼女をとても気に入っています。</s>
CPU times: user 12.8 s, sys: 0 ns, total: 12.8 s
Wall time: 12.9 s
2-4. 4-bit量子化
「load_in_4bit=True」で動作確認します。
◎ 設定
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
# トークナイザーとモデルの準備
tokenizer = AutoTokenizer.from_pretrained(
"rinna/japanese-gpt-neox-3.6b-instruction-ppo",
use_fast=False
)
model = AutoModelForCausalLM.from_pretrained(
"rinna/japanese-gpt-neox-3.6b-instruction-ppo",
load_in_4bit=True,
device_map="auto",
)
◎ 結果
![](https://assets.st-note.com/img/1687043585830-VbNhRa9Wi5.png?width=1200)
私はまどか☆マギカで、ほむらが最も可愛いと思います。彼女は非常に魅力的で優しく、自尊心の強い女の子です。彼女はとても強い個性を持っています。彼女の主な役割は、人々に自分の世界への理解と共感を与えることです。彼女は、街のすべての物事に意味があるという考えを広めています。また、彼女は重要な存在であり、物語の中心的なキャラクターとしての役割を果たしています。</s>
CPU times: user 13.9 s, sys: 9.09 ms, total: 13.9 s
Wall time: 14.5 s
関連
この記事が気に入ったらサポートをしてみませんか?