4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

gpt-neox-japanese-2.7b 日本語 GPT モデルを扱うメモ(6 GB GPU で推論動くよ)

Last updated at Posted at 2022-12-28

背景

ふえぇ... ChatGPT しゅごいね...
そのうち open に公開されそうだけど... それまでは open な日本語 GPT で頑張る!

今回は gpt-neox-japanese-2.7b 動かします.

hugging face で試せますが, stable diffusion とかに計算リソース割かれているのか, なんかいまいち実行が成功せぬ :cry:

参考情報

gpt-neox-japanese-2.7b による日本語テキスト生成を試す
https://note.com/npaka/n/n4651ee6d3c51

ありがとうございます.

CPU でも動きますが, Colab 無償版メモリ 12 GB では動かないとあるので, 16 GB はいるっぽ?
(モデルが fp32 展開すると 11.5 GB は必要なため)

とりあえず今回は CPU 128 GB mem + Ryzen 3950X + 3090(24 GB GPU mem)で動かします.

動作

ぺろっと使うには transformers の pipeline がよいでしょう.
ただデフォルトは CPU 実行(device=-1)になります.
GPU ある場合は 0(cuda:0), 1(cuda:) を指定します(文字列指定もできるんじゃろか)

また, モデルデータは fp16 になっていて 5.3 GB くらいなのですが, デフォルトで fp32 に展開ににされますので 11.5 GB くらい必要になります.
元モデルが fp16 だとあんまり fp32 に展開する利点もありませんので, fp16 で動かします!
(Intel とかの最新 CPU だと, CPU 実行の場合 fp16 のまま実行してくれたりするんじゃろかね)
torch_dtypetorch.float16 を指定します

from transformers import pipeline
import torch

device = -1 # cpu
if torch.cuda.is_available():
    device = 0

# device 0 = cuda:0
generator = pipeline("text-generation", model="abeja/gpt-neox-japanese-2.7b", torch_dtype=torch.float16, device=device)
generated = generator(
    "優秀な若人さまが、人類史上最速で GPT をお極めなされるには、",
    max_length=300,
    do_sample=True,
    num_return_sequences=3,
    top_p=0.95,
    top_k=50
)
print(*generated, sep="\n")
{'generated_text': '優秀な若人さまが、人類史上最速で GPT をお極めなされるには、それなりの動機と目的意識と決意が必要ということでしょう
か。'}
{'generated_text': '優秀な若人さまが、人類史上最速で GPT をお極めなされるには、大いなる疑問が湧きますが…'}
{'generated_text': '優秀な若人さまが、人類史上最速で GPT をお極めなされるには、GT3の開発が終わってからが妥当な時期だろう。'}

Ultra super cooool!!! :tada: :tada:

GT3 の開発が終わってから... GPT3 の開発が終わってから GPT4 が出てくるタイミングということでしょうか...!!! 😳

GPU では 5.3 GB くらいしか GPU メモリ消費しないので, 6 GB くらいのミッドレンジ GPU でも動くと思われます!

多少時間かかってもいいなら CPU でメモリ 16 GB で動かすのも手かもしれませんね.
(Apple sillicon mac なら fp16 実行でメモリ 8 GB でもうごいちゃうやも?)

TODO

  • ファインチューンとかやってみる!
  • ChatGPT っぽいのを作るためにプロンプトエンジニアリングをがんばる!
  • Whisper で音声認識して受け答えしてくれたりするようにする!
  • tdmelodic か, もしくはいい感じにピッチアクセント推定してくれる language model(e.g. https://arxiv.org/abs/2212.08321 ) と組み合わせて TTS(text-to-speech) をいい感じにする(GPT の感情推定と組みあわせるとか)
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?