LoginSignup
6
11

More than 1 year has passed since last update.

Vicuna-13B を自分の環境で動かす準備

Last updated at Posted at 2023-04-03

概要

Vicuna-13B とは ChatGPT や Bard の 90% くらいの能力を持つらしい大規模言語モデルです。

13B ということで、130億パラメータだけで、3500億パラメータ以上はあるであろう ChatGPT(GPT4)の 90% の能力はおどろきじゃ、ということで、これを Vicuna-13B を自分の環境で動かす準備のメモです。

Vicuna のリリースレポジトリ の README によりますと

Announcement: Thank you for checking out our project and your interest! We plan to release the model weights once we have addressed all legal concerns and have a low-resource version of the inference code ready. Based on our current timeline, it will be available by early next week. Please stay tuned!

とのことで、

肝心の Vicuna-13B のモデルは 2023/4/3 時点で、まだ公開されておりません ので公開されたらすぐに試せるように手ぐすね引いて待って居ようという魂胆です。

Vicuna-13B の実力が知りたければ本家デモサイトにいけばすぐに試すことが可能です

本編

実験環境

  • Windows 11
  • Anaconda

STEP 1: 仮想環境を作る

Anaconda Prompt を起動して env-vicuna という名前の仮想環境を作る

conda create -n env-vicuna

env-vicuna 仮想環境の使用を開始する

activate env-vicuna

STEP 2: 仮想環境に python を導入する

新しく作成した仮想環境では python すら導入されてないので、pythonを入れる

python の一覧を表示する

conda search python

...
python                        3.10.8      h966fe2a_1  pkgs/main
python                        3.10.8      hbb2ffb3_0  pkgs/main
python                        3.10.9      h966fe2a_0  pkgs/main
python                        3.10.9      h966fe2a_1  pkgs/main
python                        3.10.9      h966fe2a_2  pkgs/main
python                       3.10.10      h966fe2a_2  pkgs/main
python                        3.11.0      h966fe2a_2  pkgs/main
python                        3.11.0      h966fe2a_3  pkgs/main
python                        3.11.2      h966fe2a_0  pkgs/main

pythonをインストールする

conda install python=3.10.10

これで python コマンドや pip コマンドが利用できるようになった

STEP 3: インストールする

3-1 Vicuna-13B のリリース元リポジトリをクローンする

git clone https://github.com/lm-sys/FastChat.git

3-2 必要パッケージをインストールする

cd FastChat
pip3 install --upgrade pip
pip3 install -e .
pip3 install git+https://github.com/huggingface/transformers

STEP 4: windowsの場合は開発者モードを有効にしておく

次にさっそくチャットを起動するところだが、
その際、指定したモデルデータ(事前学習済データ)を huggingface_hub から自動ダウンロードする。

自動ダウンロードのとき、huggingface_hub のキャッシュシステムが重複したファイルを効率的に保存するためにデフォルトでシンボリックリンクを使用する。

Windows の場合、通常、シンボリックリンクは使えないので、シンボリックリンクを有効にしてディスクスペースを効率的に使いたい場合は、Windows を以下の手順で 開発者モード にする。(シンボリックリンク無しでも使える)

Windows を 開発者モードにする方法

設定>プライバシーとセキュリティ>開発者向け を開く

image.png

開発者モード を有効にする

image.png

STEP 5: CLIチャットを実行する

Vicuna-13B はまだ無いので、 MetaのOPT のモデルでとりあえずチャットが動くことを確認する。

python -m fastchat.serve.cli --model-name facebook/opt-2.7b

これで huggingface から facebook/opt-2.7b モデル一式をダウロード後、チャットが起動した。

image.png

ちなみに、モデルファイルは、C:/Users/[ユーザー名]/.cache/huggingface に保存される。

まとめ

  • Vicuna-13B のリリース元のリポジトリをクローンしてテキストチャットするところまで準備をしました。
  • 準備はととのいました。はよこい、 Vicuna-13B 学習済モデル。
    • 13B ということでは、ローカルPCのGPUメモリには乗り切らないだろう。GPUクラウドで試す感じかな。
    • できれば 7B もほしいなぁ。

おまけ

おまけ1

学習済モデルを自前でダウンロードする方法

(ただし、本来必要ないファイルまでダウンロードされてしまうので注意。たとえば pytorchの重みファイルだけあればいいのに、 TensorFlow や Flax といった別のライブラリ用の学習済ファイルもダウンロードされちゃう)

git clone https://huggingface.co/facebook/opt-1.3b models/facebook/opt-1.3b

image.png

python -m fastchat.serve.cli --model-name D:/sandbox/FastChat/models/facebook/opt-1.3b

image.png

おまけ2

おまけ1で git コマンドでダウンロードしたファイルは以下のようになる。1つ1つファイルの説明も記載しておく。

Hugging FaceのTransformersライブラリを使用して事前学習済みの言語モデルを利用する際に必要となるファイル

.gitattributes
config.json
flax_model.msgpack
generation_config.json
LICENSE.md
merges.txt
pytorch_model.bin
README.md
special_tokens_map.json
tf_model.h5
tokenizer_config.json
vocab.json

.gitattributes:
Gitリポジトリの属性設定ファイル。ファイルやディレクトリに対して改行コードの扱いやGit LFSの設定などを行う。

config.json:
モデルの設定情報が書かれたJSONファイル。アーキテクチャや学習時のハイパーパラメータなどが含まれる。

flax_model.msgpack:
Flaxフレームワーク用のモデルの重みファイル。FlaxはJAXをベースにしたニューラルネットワークライブラリ

generation_config.json:
文章生成タスクで使われる設定情報が書かれたJSONファイル。生成アルゴリズムや生成パラメータが記述されている。

LICENSE.md:
モデルのライセンス情報

merges.txt:
モデルのトークナイザが使うバイトペアエンコーディング(BPE)のマージルールが書かれたテキストファイル。

pytorch_model.bin:
PyTorch用のモデルの重みファイル。

README.md:
モデルのREADME

special_tokens_map.json:
特殊トークン(例:BERTでいう[CLS]や[SEP]とか)とIDのマッピングが書かれたJSONファイル。トークナイザで使われる。

tf_model.h5:
TensorFlow用のモデルの重みファイル。

tokenizer_config.json:
モデルのトークナイザで使われる語彙リストが書かれたJSONファイル。各トークンとそのIDのマッピングが定義されている。

vocab.json:
モデルのトークナイザで使用される語彙のリストが記述されたJSONファイル

6
11
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
6
11