見出し画像

My LLMこと始め ①


Macにtext-generation-webui

LLM(Large Language Model:大規模言語モデル)が気になります。
画像生成AIのように自分のパソコンで動かせないかと調べていたところ、幾つもの役立つサイトが見つかりました(参考サイトは後出)。
気になったのは「text-generation-webui」。
こう記載されています。

A Gradio web UI for Large Language Models.
Its goal is to become the AUTOMATIC1111/stable-diffusion-webui of text generation.
(目標は、テキスト生成の AUTOMATIC1111/stable-diffusion-webui になることです。)

oobabooga/text-generation-webui

Bingに聞いたところ、text-generation-webuiは、(複数の)言語モデルをチャット風のUI(ユーザーインタフェース)で使えるようにするオープンソースのアプリ。
開発したのはGitHubのユーザー名がoobaboogaという方だそうです。
GitHubのリポジトリ履歴から、最初のコミットが行われた日付は2023年3月、この時にがtext-generation-webuiの公開されたようです。

ワンクリックインストール

インストーラが用意されています。

One-click installers

  1. Clone or download the repository.

  2. Run the start_linux.sh, start_windows.bat, start_macos.sh, or start_wsl.bat script depending on your OS.

  3. Select your GPU vendor when asked.

  4. Have fun!

(Google翻訳↓)

ワンクリックインストーラー

  1. リポジトリを複製またはダウンロードします。

  2. OS に応じてstart_linux.sh、start_windows.bat、start_macos.sh、 、またはスクリプトを実行します。start_wsl.bat

  3. 尋ねられたら、GPU ベンダーを選択します。

  4. 楽しむ!

自分のパソコンのスペックは以下になります。

  • 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」を使いました。

GitHubからダウンロード

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」を選択します。

GPUの種類を聞かれます

インストールが完了すると、

Running on local URL:  http://127.0.0.1:7860

と表示されます(数分以上待ってた感じです)。
ブラウザで上記URLにアクセスし、パソコン内で構築された環境を起動します。
起動するとチャット画面が表示されます。
これがtext-generation-webuiの起動画面です。

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に要点が記載されています。

The main goal of llama.cpp is to run the LLaMA model using 4-bit integer quantization on a MacBook・・・
(llama.cppの主な目的は、MacBook 上で 4 ビット整数量子化を使用して LLaMA モデルを実行することです。・・・)

実は「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 model or LoRA」にLLMモデルを指定

「Download」ボタンをクリックするとLLMのモデルのダウンロードが始まります。
1時間近くかかりました。

Downloadボタンをンクリック

ドロップダウンから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」タブに移動します。
日本語での質問は可能ですが、返事は英語です。

Chatタブでチャット

当初回答までに5〜10秒かかりましたが、途中1秒とかからず返事が戻ることもありました。
と思えばまた10秒近く待ったり。
質問によって変わるのかもしれません。

質問は日本語でOK

「日本語で回答できるようになる予定は?」

と聞いたところ、すぐに返事が戻ってきました。

Ah, an important question! thinks Well, as an AI language model, my primary goal is to improve my language abilities and become more proficient in various languages, including Japanese. I am constantly learning and expanding my knowledge base to better assist users like you. So, yes, becoming fluent in Japanese and able to respond in the language is definitely a part of my development roadmap! 😊

(Google翻訳↓)
重要な質問です! AI 言語モデルとしての私の主な目標は、言語能力を向上させ、日本語を含むさまざまな言語に習熟することです。私は、あなたのようなユーザーをより良くサポートできるよう、常に学習し、知識ベースを拡大しています。そうです、日本語を流暢に話せるようになり、日本語で応答できるようになることは間違いなく私の開発ロードマップの一部です。

text-generation-webui & Llama 2-7B-Chatの回答

今回ダウンロードしたllama2-7b

https://huggingface.co/TheBloke/Llama-2-7b-Chat-GGUF
Provided files記載内容からです。

  • Name   Quant method(量子化)  
    Use case

  • llama-2-7b-chat.Q2_K.gguf  Q2_K
    smallest, significant quality loss - not recommended for most purposes

  • llama-2-7b-chat.Q3_K_S.gguf  Q3_K_S very
    small, high quality loss

  • llama-2-7b-chat.Q3_K_M.gguf  Q3_K_M
    very small, high quality loss

  • llama-2-7b-chat.Q3_K_L.gguf  Q3_K_L
    small, substantial quality loss

  • llama-2-7b-chat.Q4_0.gguf  Q4_0 legacy;
    small, very high quality loss - prefer using Q3_K_M

  • llama-2-7b-chat.Q4_K_S.gguf  Q4_K_S
    small, greater quality loss

  • llama-2-7b-chat.Q4_K_M.gguf  Q4_K_M
    medium, balanced quality - recommended

  • llama-2-7b-chat.Q5_0.gguf  Q5_0
    legacy; medium, balanced quality - prefer using Q4_K_M

  • llama-2-7b-chat.Q5_K_S.gguf  Q5_K_S
    large, low quality loss - recommended

  • llama-2-7b-chat.Q5_K_M.gguf  Q5_K_M
    large, very low quality loss - recommended

  • llama-2-7b-chat.Q6_K.gguf  Q6_K
    very large, extremely low quality loss

  • llama-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だけが表示されます。

/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/フォルダに移動します。

ELYZA-japanese-Llama-2-7b-fast-instructのgguf版を入手

「Model」タブでリロード、ドロップダウンからELYZA-japanese-Llama-2-7b-fast-instructを選択します。

ドロップダウンからELYZA-japanese-Llama-2-7b-fast-instructを選択

このままでは日本語に切り替わりません。
Prameters」タブの「Character」の設定で「あなたは優秀な日本人アシスタントです。」と設定します。
これが最適なのかわかりませんが、「日本語で返事ができるLLMです」では英語から切り替わらないど、決まったフレーズがあるようです。

日本語に切り替えるための設定

加えて、他のLLMを使用していた場合、「Chat」タブの「Past Chat」の右側のゴミ箱ボタンを押して新しい会話を始めることで日本語の返答に切り替わりました。

日本語の返答に切り替えるために現在のChat消去

質問によっては微妙な日本語を返すこともあります。
シンプルに返答できる会話は比較的無難にこなしてくれてそうです。

日本語で返事をもらえました

text-generation-webuiには会話の多様を設定する機能(「Parameters」タブ→「Generation」)やLoraを使ったチューニング機能(「Training」タブ)があるなど、まだ調べたいは残っています。
GGUF形式提供されてないオープンソースのLLMもいくつもあるので、それらが使えないのかどうかも知りたいところです。

オリジナルは申請が必要

今回使ったGGUF形式のLlama 2でなく、MetaがHugging Faceで提供しているオリジナルのモデルを使う場合は登録が必要です。
例えば登録前に以下のページにアクセスすると、

以下のようなメッセージが表示されます。

Access Llama 2 on Hugging Face

This is a form to enable access to Llama 2 on Hugging Face after you have been granted access from Meta. Please visit the Meta website and accept our license terms and acceptable use policy before submitting this form. Requests will be processed in 1-2 days.

Your Hugging Face account email address MUST match the email you provide on the Meta website, or your request will not be approved.

(Google翻訳↓)
これは、Meta からアクセスを許可された後、Hugging Face で Llama 2 にアクセスできるようにするためのフォームです。このフォームを送信する前に、 Meta Web サイトにアクセスし、ライセンス条項と利用規約に同意してください。リクエストは 1 ~ 2 日で処理されます。

Hugging Face アカウントの電子メール アドレスは、メタ Web サイトで指定した電子メール アドレスと一致する必要があります。一致しない場合、リクエストは承認されません。

Hugging Faceから

Meta(Facebook Research)のページで申請します。
上記の通りHugging Face アカウントと同じアドレスで申請します。

すると、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のページ上のメッセージは

Gated model You have been granted access to this model

Hugging Faceから

に変わりました。

参考にしたサイト



(後日談)
後で分かったのですが、GPUが動いてませんでした。
Macの「アクティビティモニタ」を見てわかりました。
インストーラが出したメッセージを見てみると
The installed version of bitsandbytes was compiled without GPU
というメッセージが出ていました。
現在解決策があるかどうか調査中です。

この記事が気に入ったらサポートをしてみませんか?