2023-06-04に更新

ミドルGPUで35億の女(RINNA AI)のローカル実行 ことはじめ

RINNA社が 5月17日 に、 rinna/japanese-gpt-neox-3.6b-instruction-sft という、対話言語 AI モデルを公開したと、プレスリリースを出した。
その後さらに 5月31日、人間の評価による強化学習したモデル rinna/japanese-gpt-neox-3.6b-instruction-ppo を追加リリースしている。

この AI モデルは、ご家庭にあるミドルレンジ GPU でもサクサク動く性能だったので、 AI 系に明るくない人にも導入できるように、詳しい導入手順を紹介しようと思う。
rinna-3.6b-chat-00-00-split.gif

こう言うのって、登場して直ぐ情報がホットなうちに記事にすることに価値があって、こんな 1~2週間経ってから記事を書いたって誰にも届かないんだろうけど、とりあえず書いてみる。

この界隈の情報はコンテクストが高いというか、あんまりイチから導入方法を説明している記事って目にしないので、多少は需要があるかなと。

はじめに断っておくが、 Chat-GPT や 新しいBing 等と比べると数段落ちる回答精度となる。
ただ、個人がお手軽に購入できる程度の GPU を使って、完全にローカルで動かす事ができるという点が、一種の浪漫だ。

前提条件

以下のスペックを持った PC。

  • OS は Windows 10 または Windows 11
  • GeForce RTX 3060 以上、 VRAM 12GB 以上が載った NVIDIA の GPU
    • GPU ドライバはインストール済み
    • 具体的には 2023年5月現在 以下のいずれかモデル
      • GeForce RTX 3060 (12 GB)
      • GeForce RTX 3080 (12 GB)
      • GeForce RTX 3090
      • GeForce RTX 3090 Ti
      • GeForce RTX 4060 Ti (16 GB)
      • GeForce RTX 4070
      • GeForce RTX 4070 Ti
      • GeForce RTX 4080
      • GeForce RTX 4090
    • 3070 Ti, 3060 Ti, 3060 (8GB) だと VRAM が足りないので、多分動かすとエラーになる

導入手順

Python のインストール

Python と呼ばれるプログラミング言語(の、「ランタイム」と呼ばれるもの)をインストールする。

https://www.python.org/downloads/windows/

こちらのページから、 Python Releases for Windows の Latest Python 3 Release のバージョン (以下のスクショ だと 3.11.3) を確認し、下のリストからそのバージョンの "Windows Installer (64-bit)" をダウンロード。


ダウンロードしたインストーラーを実行し、デフォルトの "Use admin privileges when installing py.exe" にチェックが入っていることを確認して、インストールを実行。

Python 仮想環境の作成

先ほどインストールした Python に、追加で必要なツールをダウンロードする環境(仮想環境と呼ばれるもの)を作成する。

まず、これから環境を作成していく元のフォルダをエクスプローラで開き、アドレスバーに powershell と入力する。

すると、黒い画面が立ち上がるので、以下のコマンドを実行。

py -3 -m venv rinna-japanese-gpt-chat

すると、 rinna-japanese-gpt-chat という名前のフォルダ作成されているはず。

vscode のインストール

Visual Studio Code (vscode) という、プログラム用のテキストエディタ(コードエディタ)をインストールする。

https://code.visualstudio.com/

Download for Windows からインストーラをダウンロードし実行する。

途中、インストールタスクの選択で、「エクスプローラーのディレクトリ コンテキスト メニューに [Code で開く] アクションを追加する」を追加しておく。

スクリプトファイルのダウンロード

実行するスクリプトファイルをダウンロード。

以下のページの右上らへんにある、「Download ZIP」をクリックしてダウンロードした ZIP を解凍し、中にある rinna_gradio_chat.py を、 先ほど作成された rinna-japanese-gpt-chat という名前のフォルダの中に置く。

https://gist.github.com/advanceboy/717fde162a6f9ccb592f04898f0aacc1

vscode の環境のセットアップ

後半の作業を簡単にするため、 vscode の環境を整える。

先ほど作成された rinna-japanese-gpt-chat という名前のフォルダを右クリックして(Windows 11 の場合は、更に「その他のオプションを表示を」クリックして)、 「Code で開く」 を選択する。

すると、 vscode が立ち上がる (フォルダを信用しますか?的な Trust 何ちゃらの画面が出たら、 yes を選択しておく)。

Ctrl + Shift + E キーを押すと開く vscode 上の Explorer ペインで、先ほどダウンロードした .py ファイルを選択する。
すると、 "Do you want to install the recommented 'Python' Extension..." と聞かれるので、 Install を選択。

インストールが終わったら、再び vscode 上の Explorer ペインで .py ファイルを選択して Ctrl+@ キーを押し、 PowerShell ターミナルを表示させる。

このとき、表示される TERMINAL ウィンドウでは (rinna-japanese-gpt-chat) PS と先頭に表示されるようになっているはずだが、もしそれが表示されない場合は、このターミナル上で .\Scripts\Activate.ps1 と入力しておく。

Python の依存パッケージ (CUDA 対応 CUDA) の確認とインストール

Python で AI を実行するため、 AI 関連ライブラリーを、先ほど作成した Python の仮想環境内にインストールする。

まず、 PyTorch という機械学習ライブラリのページに飛ぶ。
https://pytorch.org/get-started/locally/

以下のような組み合わせの選択肢を選び、表示されたコマンドを前述の vscode のターミナル上( (rinna-japanese-gpt-chat) PS と先頭に表示される状態)で実行する。

  • PyTorch Build: Stable
  • Your OS: Windows
  • Package: Pip
  • Language: Python
  • Compute Platform: CUDA の最新版

例えば、 CUDA 11.8 の環境をインストールする場合は、以下のようなコマンドになると思われる。

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

その後、残りの依存ライブラリもインストールしておく。

pip3 install ipython sentencepiece transformers accelerate gradio

pip3 install の実行順を逆にすると、 CUDA に対応していない torch がインストールされてしまい、後々エラーになってしまうので注意。

CUDA ツールキットのインストール

最後に、 CUDA と呼ばれる NVIDIA の GPU 上で AI を効率よく実行するためのツールキットをインストールする。

以下の CUDA Toolkit Archive のページを開き、 前項で "Compute Platform" で選択したバージョンの CUDA Toolkit をダウンロードし、インストールする。

https://developer.nvidia.com/cuda-toolkit-archive

最新版ではなく、前項の PyTorch ライブラリのダウンロード時に選択したバージョンの CUDA をダウンロードする必要がある点に注意が必要だ。

例えば、 2023年5月現在、 CUDA Toolkit の最新版は 12.1.1 だが、 前述の PyTorch ライブラリが対応する CUDA が 11.8 までなので、 CUDA Toolkit 11.8.0 をダウンロード&インストールする。

実行手順

vscode のターミナル上( (rinna-japanese-gpt-chat) PS と先頭に表示される状態)で、以下のように実行する。

python .\rinna_gradio_chat.py

しばらくすると、ターミナルにローカルで立ち上がったサーバーの URL http://127.0.0.1:7860 が表示されるので、 Ctrl キーを押しながらクリックして、ブラウザでアクセスする。

rinna-3.6b-chat-00-00-split.gif

あとはお好きなようにいじくり倒すだけだ。

前述の動画は生成部分も含めて等倍速だが、ミドルレンジの GPU でもそれなりの速度で生成できていることがわかる。

停止させたい場合は、ターミナル上で Ctrl + C キーを押そう。

補足

生成速度

ChatGPT などでは元々生成速度が速いので気になりにくいが、 英語と比べて日本語テキストの生成は遅く、同じ情報量で生成時間も利用料金も数倍かかってしまう。
その理由を雑に説明すると、「トークン」と呼ばれる学習・生成の単位が、英語では単語単位となる一方で、日本語は文字単位となっているためだ。

一方、りんなさんこと japanese-gpt-neox-3.6b では、単語間にスペースが存在しない日本語でも、ある程度単語ごとにトークン化されてから処理されるので、生成も文字単位では無く単語単位となり、処理効率が大幅に向上しているのだろうと考えられる。
ChatGPT などが存在しても、国産ないし国内向けの AI モデルが必要とされる理由の一つに、こういった背景があるようだ。

対応GPU

対応GPUを RTX30 世代以降に限っているのは、VRAM の利用を節約するために bfloat16 量子化して動かしているのだが、この bloat16 での効率的な計算に対応しているのが Ampere 以降世代の GPU となるためだ。

もし、 RTX 10, 20 の GPU で動かしてみたい場合、

https://gist.github.com/advanceboy/717fde162a6f9ccb592f04898f0aacc1#file-rinna_gradio_chat-py-L35

torch_dtype = torch.bfloat16

この部分を、搭載 VRAM に応じて torch_dtype = torch.float16torch_dtype = torch.float32 に書き換えれば上手く動くかもしれない。

CUI版

わざわざブラウザ立ちあげず CUI 上でチャットしたい場合は、上記のスクリプトの替わりに以下のスクリプトを使うと良いだろう。

Originally published at aquasoftware.net
ツイッターでシェア
みんなに共有、忘れないようにメモ

advanceboy

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント