2
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?

ChatRWKVを使ってみた

Last updated at Posted at 2023-11-30

はじめに

CYBIRD Advent Calendar 2023 1日目担当の @garyumaru です。
サイバードでは、技術統括部所属のエンジニアとして、イケメンシリーズの開発・運用など、Unityタイトルに限らず、iOS/Androidのネイティブアプリも含めた、さまざまな案件の技術サポートをしている 通りすがりのゲームデザイナー です。

旬のAI、はじめました〜♪

これは BlinkDL 氏が開発した言語モデル RWKV Language Model をベースにしたチャットAI(CharRWKV)を利用するための環境構築のためのドキュメントです。

ChatRWKV は ChatGPT に似ていますが、RWKV (100% RNN) 言語モデルとオープンソースを利用したものです。
https://github.com/BlinkDL/ChatRWKV

これを使って、ローカルPCで、AIと会話できる環境を構築します。

chatRWKV_wsl2_start.png

ローカルでの環境構築をする前に

PCのスペック

動作検証環境その1:
DOSPARA GALLERIA GCR1660TGF-QC-G
CPU: Intel(R) Core(TM) i7-9750H 2.60GHz
GPU: Intel UHD Graphics 630 / NVIDIA GeForce GTX1660
RAM: 16GB
OS: Windows 11 Pro 23H2

動作検証環境その2:
MOUSE COMPUTER G-TUNE NG-N-i5730SA1
CPU: Intel(R) Core(TM) i7-7700HQ 2.80GHz
GPU: NVIDIA GeForce GTX1070
RAM: 16GB
OS: Windows 10 Pro 22H2

これらのような最新ではないスペックのPCでも動かすことができました。
あとで説明する .wslconfig の設定が勝利の鍵です。
本格的にAIについて取り組むなら、NVIDIA GeForce RTX 20x0/30x0/40x0 シリーズなどCUDAに対応したGPUを搭載したPCを利用した方が良いんじゃないかな?と個人的には思います。
また、RAMのサイズやHDD/SSDの空き容量が十分確保できているPCにて、環境構築をするとトラブルが減ります。
実際に私が環境構築をする際には、Cドライブの空き容量不足が原因で、WSLやPython、ChatRWKVのために必要なライブラリのインストール中にフリーズしたり、エラーが発生するケースが多発したので、ご注意ください。

環境構築

PCのビデオカードに合わせてGPUドライバーを最新のものに更新する

NVIDIA GPU ドライバー←ここからPCに搭載されているGPUにあったものをダウンロードしてインストールしてください

WSL2(Windows Subsystem for Linux 2)のインストール

WSLを新規にインストールする場合

  1. Power Shellを「管理者として実行する」を選んで開く

  2. Power Shellで次のコマンドを入力する

    wsl --install
    
  3. コマンドが完了したら、コンピュータを再起動する

  4. 再起動後、Ubuntuのインストールが自動的に始まる
    - ユーザ名とパスワードを設定する

  5. Ubuntuのシェルが起動したらWSL2のインストールが完了となる

既存のWSLをアップデートする場合

  1. Power Shellを「管理者として実行する」を選んで開く

  2. Power Shellで次のコマンドを入力する

    wsl --update
    
  3. WSLを再起動する

    wsl --shutdown
    

WSLのバージョンを確認する

WSLが正しくインストールできていればバージョンを確認できます。

  • WSLのバージョン情報を表示する

    wsl --version
    

WSL2のメモリ設定

  1. .wslconfig
    .wslconfigを編集してメモリの割り当てを変更します。
    c:¥Users¥{自分のルートディレクトリ}.wslconfigファイルが存在しない場合は作成します。
    c:¥Users¥{自分のルートディレクトリ}.wslconfigファイルを編集して、下記の記述を追加します。

    例: c:¥Users¥garyumaru¥.wslconfig

    [wsl2]
    memory=16GB
    swap=128GB
    

    swapの容量指定のためには、Cドライブに同じだけの空き容量が必要になるので適切なサイズを指定してください。

  1. PCを再起動する。

  2. Power Shellを「管理者として実行する」を選んで開く

  3. Power Shellでwsl2を起動する

  4. freeコマンドを実行する。

     - 下記のコマンドを実行してmemoryやswapへのメモリの割り当てが期待通りに増加していれば完了です。
    
    free -m
    

WSL2の起動

  1. Power Shellを「管理者として実行する」を選んで開く

  2. Power Shellで次のコマンドを入力する

    wsl
    

Python(pyenv+venv)環境のインストール

pyenv : Pythonのインストールとバージョン管理するためのツール
venv : Pythonが動作する仮想環境を作成・管理するためのツール

  1. Ubuntuのターミナルで次のコマンドを実行する

    sudo apt update
    sudo apt upgrade -y
    
  2. 次のコマンドを実行する

    sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev \
    libbz2-dev libreadline-dev libsqlite3-dev curl \
    libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
    
  3. pyenvのインストール

    curl https://pyenv.run | bash
    
  4. インストール後に表示されるメッセージに従って、~/.bash_profile(~/.profile)や~/.bashrcに追記する
    表示されるメッセージは次の通り

    # Load pyenv automatically by appending
    # the following to
    # ~/.bash_profile if it exists, otherwise ~/.profile (for login shells)
    # and ~/.bashrc (for interactive shells) :
    
    export PYENV_ROOT="$HOME/.pyenv"
    [[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init -)"
    
    # Restart your shell for the changes to take effect.
    
    # Load pyenv-virtualenv automatically by adding
    # the following to ~/.bashrc:
    
    eval "$(pyenv virtualenv-init -)"
    
  5. pyenvでバージョン指定してPythonをインストールする

    pyenv install 3.11.5
    
  6. pyenvで利用可能なpythonのバージョンを確認する

    pyenv versions
    

    実行すると下記のように表示される

    * system(set by /home/garyumaru/.pyenv/version)
     3.11.5  
    
  7. pyenvで利用するPythonのバージョンを変更する

    pyenv global 3.11.5
    
  8. pyenvで利用するPythonのバージョンが変更されたことを確認する

    pyenv versions
    

    実行すると下記のように表示される

       system(set by /home/garyumaru/.pyenv/version)
    * 3.11.5  
    
  9. venvのインストール
    ※pythonのバージョンが3.3以上であればインストール不要で利用できる

  10. venvを使って仮想環境を構築する
    python -m venv {仮想環境名}
    例: py_workspaceフォルダを作成し、その中にtest1という名前のプロジェクト(仮想環境)を構築する

    cd ~/
    mkdir py_workspace
    cd py_workspace
    python -m venv test1 
    
  11. 仮想環境をアクティブにする
    source {仮想環境名}/bin/activate

    source test1/bin/activate
    
  12. 仮想環境を終了する
    deactivate

    deactivate
    

ChatRWKVのインストール

  1. 仮想環境を構築する
    作業フォルダ: py_workspace
    仮想環境名: rwkv_test1

    cd ~/
    wsl
    mkdir py_workspace
    cd py_workspace
    python -m venv rwkv_test1
    source rwkv_test1/bin/activate
    
  2. ChatRWKVをCloneする

    git clone https://github.com/BlinkDL/ChatRWKV
    
  3. 環境設定

    cd ChatRWKV
    pip install -r requirements.txt
    pip install transformers
    pip install ninja
    pip install torch torchvision
    

    pip installを実行したときに、下記のnoticeが表示される場合は、pip install --upgrade pipを実行して、pipをアップグレードできます。

    [notice] A new release of pip is available: 23.2.1 -> 23.3.1
    [notice] To update, run: pip install --upgrade pip
    
  1. モデルをダウンロードする
    https://huggingface.co/BlinkDL
    今回、検証で使用するPCはメモリも少なくGPUの性能もイマイチなので小さいサイズのモデル(3B)にしました。

  2. ダウンロードしたモデルをChatRWKV/v2フォルダの下に格納する

  3. chat.pyファイルを編集する

    • chat_langを日本語に設定する
      CHAT_LANG = 'English' # English // Chinese // more to come
      
      Japaneseに変更する
      CHAT_LANG = 'Japanese' # English // Chinese // more to come
      

    • モデルを指定する
      args.MODEL_NAME = 'RWKV-5-World-1B5-v2-20231025-ctx4096.pth'
      

    • CPUモードを指定する(※CUDAが利用できないPCの場合)
      #args.strategy = 'cpu fp32'
      args.strategy = 'cuda fp16'
      
      cpu fp32 を有効にする
      args.strategy = 'cpu fp32'
      # args.strategy = 'cuda fp16'
      
  4. ChatRWKV/v2ディレクトリで、次のコマンドを実行する

    python chat.py
    
  5. 必要なものが全てインストールされた状態ならpython chat.pyコマンドを実行することでChatRWKVが起動します。

    chatRWKV_wsl2_start.png

まとめ

お疲れ様でした。ついにローカルPCでChatRWKVが動きました!
Bobになって、Aliceとの会話を楽しみましょう。

ここから先の展開としては、言語モデルのトレーニングやAIとの会話をhttp通信で応答させるなど、夢が広がりますね。それらについては、また別の機会に...

ぜひ、皆さんも挑戦してみてください。

最後に

CYBIRD Advent Calendar 2023、 明日は@koronekoさんが担当です。
どんな内容なのか楽しみですね。

おまけ:GPU(CUDA)を有効にする!?

実はchat.py内で args.strategy = 'cuda fp16' になっていても初期の状態ではGPUは有効になっていないようです。

追加で下記のような設定が必要になります。

  1. chat.pyの内のオプションを1に設定する

    os.environ["RWKV_CUDA_ON"] = '1'
    

    この設定でpython chat.pyを実行すると、次のようなエラーが出るようになります。

       raise OSError('CUDA_HOME environment variable is not set. '
       OSError: CUDA_HOME environment variable is not set. Please set it to your CUDA install root.
    
  2. CUDA Toolkitをインストールする
    https://developer.nvidia.com/cuda-11-8-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=deb_network
    ※最新の12.xをインストールするとPyTorchが対応していないみたいなので、11.8にする

    wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.0-1_all.deb
    sudo dpkg -i cuda-keyring_1.0-1_all.deb
    sudo apt-get update
    sudo apt-get -y install cuda-11-8
    
  3. PCを再起動して、wslを起動し、ChatRWKVを動かす仮想環境を立ち上げます。

    cd ~
    cd py_workspace
    source rwkv_test1/bin/activate
    cd ChatRWKV/v2
    
  4. python chat.pyコマンドを実行する

  5. これでGPU(cuda)が有効になったChatRWKVが起動できます。

おまけ:その2

swapのメモリを指定したいけど、Cドライブの空き容量が少ない場合、Dドライブなどにディレクトリを作成して、swapfileを指定します。ただしディレクトリはあらかじめ作成しておく必要があります。

  • 例: .wslconfig

    [wsl2]
    memory=16GB
    swap=64GB
    swapfile=D:\\temp\\wsl-swap.vhdx
    

参考

2
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
2
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?