My LLMこと始め ①
Macにtext-generation-webui
LLM(Large Language Model:大規模言語モデル)が気になります。
画像生成AIのように自分のパソコンで動かせないかと調べていたところ、幾つもの役立つサイトが見つかりました(参考サイトは後出)。
気になったのは「text-generation-webui」。
こう記載されています。
Bingに聞いたところ、text-generation-webuiは、(複数の)言語モデルをチャット風のUI(ユーザーインタフェース)で使えるようにするオープンソースのアプリ。
開発したのはGitHubのユーザー名がoobaboogaという方だそうです。
GitHubのリポジトリ履歴から、最初のコミットが行われた日付は2023年3月、この時にがtext-generation-webuiの公開されたようです。
ワンクリックインストール
インストーラが用意されています。
One-click installers
Clone or download the repository.
Run the start_linux.sh, start_windows.bat, start_macos.sh, or start_wsl.bat script depending on your OS.
Select your GPU vendor when asked.
Have fun!
(Google翻訳↓)
ワンクリックインストーラー
リポジトリを複製またはダウンロードします。
OS に応じてstart_linux.sh、start_windows.bat、start_macos.sh、 、またはスクリプトを実行します。start_wsl.bat
尋ねられたら、GPU ベンダーを選択します。
楽しむ!
自分のパソコンのスペックは以下になります。
MacBook Pro (14インチ、Apple 2021年モデル)
10コアCPU、16コアGPUを搭載したM1 Proチップ
16GB RAM、1TB SSD
(機械学習に強いと聞きM1 Macを購入しましたが、後で分かったのは生成AIを使うにはNVIDIAがベストということ。加えてM1ではNVIDIAの外付けGPUが使えないのを後で知って・・・)
GPUにApple M Seriesを選択
今回はGitHubのページから「Download ZIP」を使いました。
text-generation-webui-main.zipというファイルをダウンロードできました。
解凍し、ターミナルで「bash start_macos.sh」を実行すればインストール開始です。
(自分はダウンロードフォルダに置いたまま実行してしまいましたが、管理しやすいフォルダに置いた方がよいです)
(base) xxxMacBook-Pro Downloads text-generation-webui-main % bash start_macos.sh
インストールが進むと、「Which is your GPU ?」と聞かれます。
「Apple M Series」を選択します。
インストールが完了すると、
Running on local URL: http://127.0.0.1:7860
と表示されます(数分以上待ってた感じです)。
ブラウザで上記URLにアクセスし、パソコン内で構築された環境を起動します。
起動するとチャット画面が表示されます。
これがtext-generation-webuiの起動画面です。
Llama 2ベースllama.cppの主目的はMac
LLMファイルをダウンロードし、text-generation-webuiに登録します
今回はMetaの「Llama 2」の70億パラメータ版(Llama 2-7B-Chat)を使います。
ただし、Hugging Faceから取得できるLlama 2本体はではなく、パソコンで動作させるランタイム版として提供されている「llama.cpp」を使います。
「llama.cpp」についてはGitHubのDescriptionに要点が記載されています。
実は「llama.cpp」が何なのかわかってないので不安でしたが、「・・・ is generously supported by a grant from andreessen horowitz」(アンドリーセン・ホロウィッツから資金を得ている)という記載を見つけました。
期待されているプロジェクトなのだろうと思い、使います。
(text-generation-webuiもアンドリーセン・ホロウィッツから助成金をもらっているそうです)
LLMモデルをダウンロード
llama.cppを使う=Llama 2-7B-Chat用のGGUF形式のモデルファイルを使用する、という音のようです。
text-generation-webuiに、GGUF 形式のモデルファイルの所在「TheBloke/Llama-2-7b-Chat-GGUF」を登録します。
「TheBloke/Llama-2-7b-Chat-GGUF」はHugging Faceの該当ページのタイトル横にあるコピーアイコンから取得できます。
「Model」タブに移動し「Download model or LoRA」のエリアに「TheBloke/Llama-2-7b-Chat-GGUF」と記載します。
「Download」ボタンをクリックするとLLMのモデルのダウンロードが始まります。
1時間近くかかりました。
ドロップダウンからLLMを選択
Modelタブに戻り、リロードっぽいアイコン(上下に曲がり矢印)クリックします。
Modelのドロップダウンに、先ほどダウンロードしたモデルの一覧が表示されます。
モデルを選んだら「Load」ボタンをクリックして設定が終わりです。
同じLlama 2-7B-Chatの中でも、学習の仕方が異なる複数のモデルに分かれています。
Hugging Faceのページの「Provided Files」を見るとその種類がわかります。
今回は推奨されている、
Name:Llama-2-7b-chat.Q4_K_M.gguf
Quant method:Q4_K_M
Bits:4
Size:4.08 GB
Max RAM:6.58 GB
requiredUse case:medium, balanced quality - recommended
(2023年10月10日時点)
を選択しました。
チャットしてみる
「Chat」タブに移動します。
日本語での質問は可能ですが、返事は英語です。
当初回答までに5〜10秒かかりましたが、途中1秒とかからず返事が戻ることもありました。
と思えばまた10秒近く待ったり。
質問によって変わるのかもしれません。
「日本語で回答できるようになる予定は?」
と聞いたところ、すぐに返事が戻ってきました。
今回ダウンロードしたllama2-7b
https://huggingface.co/TheBloke/Llama-2-7b-Chat-GGUF
のProvided files記載内容からです。
Name Quant method(量子化)
Use casellama-2-7b-chat.Q2_K.gguf Q2_K
smallest, significant quality loss - not recommended for most purposesllama-2-7b-chat.Q3_K_S.gguf Q3_K_S very
small, high quality lossllama-2-7b-chat.Q3_K_M.gguf Q3_K_M
very small, high quality lossllama-2-7b-chat.Q3_K_L.gguf Q3_K_L
small, substantial quality lossllama-2-7b-chat.Q4_0.gguf Q4_0 legacy;
small, very high quality loss - prefer using Q3_K_Mllama-2-7b-chat.Q4_K_S.gguf Q4_K_S
small, greater quality lossllama-2-7b-chat.Q4_K_M.gguf Q4_K_M
medium, balanced quality - recommendedllama-2-7b-chat.Q5_0.gguf Q5_0
legacy; medium, balanced quality - prefer using Q4_K_Mllama-2-7b-chat.Q5_K_S.gguf Q5_K_S
large, low quality loss - recommendedllama-2-7b-chat.Q5_K_M.gguf Q5_K_M
large, very low quality loss - recommendedllama-2-7b-chat.Q6_K.gguf Q6_K
very large, extremely low quality lossllama-2-7b-chat.Q8_0.gguf Q8_0
very large, extremely low quality loss - not recommended
インストーラを起動したディレクトリ内の
/text-generation-webui-main/models/
にモデルが配置されます。
使うモデルだけ残す、別のLLMモデルをダウンロードして/models/フォルダに置いて使う、といったこともできるそうです。
/models/フォルダを使いLLM変更
例えば、使うLLMファイルだけ/models/フォルダに残してリロードします。ドロップダウンには残ったLLMだけが表示されます。
別のLLMをダウンロードしてみます。
日本のELYZA社公開している日本語で返事が可能な「ELYZA-japanese-Llama-2-7b-fast-instruct」。
「Llama 2」に日本語の語彙を追加学習したLLMで、GGUFフォーマット変換版が以下で公開されています。
上記ページの「File and versions」タブから「ELYZA-japanese-Llama-2-7b-fast-instruct-q4_K_M.gguf」をダウンロードし、/text-generation-webui-main/models/フォルダに移動します。
「Model」タブでリロード、ドロップダウンからELYZA-japanese-Llama-2-7b-fast-instructを選択します。
このままでは日本語に切り替わりません。
「Prameters」タブの「Character」の設定で「あなたは優秀な日本人アシスタントです。」と設定します。
これが最適なのかわかりませんが、「日本語で返事ができるLLMです」では英語から切り替わらないど、決まったフレーズがあるようです。
加えて、他のLLMを使用していた場合、「Chat」タブの「Past Chat」の右側のゴミ箱ボタンを押して新しい会話を始めることで日本語の返答に切り替わりました。
質問によっては微妙な日本語を返すこともあります。
シンプルに返答できる会話は比較的無難にこなしてくれてそうです。
text-generation-webuiには会話の多様を設定する機能(「Parameters」タブ→「Generation」)やLoraを使ったチューニング機能(「Training」タブ)があるなど、まだ調べたいは残っています。
GGUF形式提供されてないオープンソースのLLMもいくつもあるので、それらが使えないのかどうかも知りたいところです。
オリジナルは申請が必要
今回使ったGGUF形式のLlama 2でなく、MetaがHugging Faceで提供しているオリジナルのモデルを使う場合は登録が必要です。
例えば登録前に以下のページにアクセスすると、
以下のようなメッセージが表示されます。
Meta(Facebook Research)のページで申請します。
上記の通りHugging Face アカウントと同じアドレスで申請します。
すると、Hugging Faceのページに以下のメッセージが表示されます。
待ちます。
翌日メールが来ました。
Get started with Llama 2
You’re all set to start building with Llama 2.
The models listed below are now available to you as a commercial license holder. By downloading a model, you are agreeing to the terms and conditions of the license, acceptable use policy and Meta’s privacy policy.
Hugging Faceのページ上のメッセージは
に変わりました。
参考にしたサイト
(後日談)
後で分かったのですが、GPUが動いてませんでした。
Macの「アクティビティモニタ」を見てわかりました。
インストーラが出したメッセージを見てみると
The installed version of bitsandbytes was compiled without GPU
というメッセージが出ていました。
現在解決策があるかどうか調査中です。
この記事が気に入ったらサポートをしてみませんか?