LoginSignup
30
34

Llama3,Phi-3などの対話型人工知能(大規模言語モデル)をパソコンで動かす

Last updated at Posted at 2024-04-24

かつては大規模言語モデルは,メモリを大量に消費し,大量のGPUが必要なため個人レベルで動かすものではありませんでした.しかし,2024年にLlama3 7BやMixtral 8x7b, Phi-3 smallなどChatGPT-3.5レベルの能力を持ち軽量で無料の大規模言語モデルが登場してきました.それだけではなく,これらの大規模言語モデルをコマンド一つでインストールするが出来るようにもなりました.2024年から,大規模言語モデル(対話型人工知能)を自宅で気軽に動かせる時代になったと言えます.

この記事に対話型人工知能をパソコンにインストールする方法とその結果を書きます.

環境

前提としている環境

私は人工知能の研究をしているため,すでにLinux(Debian 12)上でPython3とCUDAが動く環境を整えています.以下の記事はLinuxの使用を前提にしています

パソコンのスペック

  • CPU: Ryzen 5900X
  • RAM: 64GB
  • GPU: GTX1080Ti x 2枚

Llama3 7BとPhi-3 Miniを動かすのであればGPU1枚で十分です(CPUだけでも動くかも知れません).Llama3 70Bを動かすのであれば,RAMとGPUのメモリを合計して64GBより多ければ動くと思われます(確証はありません).

動かすモデル

Llama3とMixtral,Command R+,CodeGemma,Phi-3を動かします.

大規模言語モデルのインストール

Ollamaというツールを使って大規模言語モデルをインストールします.

sudo apt install curl
curl -fsSL https://ollama.com/install.sh | sh

このコマンドでOllamaがインストールされます.

Llama3 7Bを使う場合は,次のコマンドを打ちます.

ollama run llama3

初回は,モデルをダウンロードするので時間がかかります.実効に成功すると,次のような表示となります.

ollama run llama3
>>> Send a message (/? for help)

この表示になれば,ChatGPTと同じように質問を打ち込んでEnterボタンを押すとLlama3 8Bから回答が得られます.このように,極めて簡単に大規模言語モデルをインストールし,使うことができます.

代表的なモデルの実行コマンドをまとめておきます.コマンドは変更の可能性があるので,公式ページも確認してください.実行コマンドのモデル名の後にオプションが無いものやビット数が書かれていないものは基本的に4ビット量子化されたモデルです.

モデル 実行コマンド
Llama 8B ollama run llama3
Llama 8B (fp16) ollama run llama3:8b-instruct-fp16
Llama 70B ollama run llama3:70b
Mixtral 8x7b ollama run mixtral
Mixtral 8x7b (q5) mixtral:8x7b-instruct-v0.1-q5_K_M
Mixtral 8x22b ollama run mixtral:8x22b
Command R+ ollama run command-r-plus
CodeGemma ollama run codegemma
Phi-3 Mini ollama run phi3
Phi-3 Mini (fp16) ollama run phi3:3.8b-mini-instruct-4k-fp16

また,モデルがアップデートされることがあります.先日もLlama 70Bに不具合がありアップデートされました.そのような場合は,次のコマンドでモデルをアップデートしましょう

ollama pull llama3:70b

実行速度

それぞれのモデルに"Can you tell me about neural networks?"と質問したときの回答速度をまとめておきます.1回の試行しかしていないので,正確ではないかも知れませんが目安にはなるでしょう.

表はeval rateです.実行速度を見ると,Llama3 8BとPhi-3 miniが圧倒的に早いことが分かります.Mixtral 8x7bは,これらに比べ遅いですが十分実用的な速度だと言えます.また,Llama3 8BとPhi-3 mini量子化されていないfp16バージョンも十分早く,ゲーミングPCなどでこれらを動かす場合は量子化バージョンを使う必要はないでしょう. Mixtral 8x7bは5ビット量子化版は速いですが,6ビット量子化版はllama3 70Bの4ビット量子化版と同程度のスピードです.

Llama3 70Bは遅いですが,使えなくは無いでしょう.Lamma3 70Bは性能がClaude3 Sonnetと同レベルと言われていますので,それを考えれば,この遅さも我慢できるのではないでしょうか.

Code生成に特化したCodeGemmaも高速に動作します.これもfp16版でも高速に動作しますので,より高速化したいという要望が無い限り量子化版を使う必要な無いでしょう.

model eval rate (tokens/s)
Llama3 8B 51.71
Llama3 8B (fp16) 20.96
Llama3 70B 1.85
Mixtral 8x7b 14.29
Mixtral 8x7b (q5) 9.15
Mixtral 8x7b (q6) 1.71
Mixtral 8x22b -
Command R+ 0.92
CodeGemma 48.64
CodeGemma (fp16) 18.45
Phi-3 Mini 79.75
Phi-3 Mini (fp16) 37.55

モデルのサイズ,実行時のメモリー使用率,CPU使用率

モデルのサイズ,実行時のメモリー使用率,CPU使用率の一覧です.メモリ使用率とCPU使用率は,先と同様に"Can you tell me about neural networks?"と質問したとき,モデルが回答を生成しているときのものです.この結果と先の生成速度を見ると,GPUのメモリが足りずメインメモリ(RAM)を使うモデルは,劇的に低速になることが分かります.これは効率的にGPUで計算できていないためではないでしょうか(正確なところはollamaの仕組みを理解しないと分かりませんが).そして,GPUのメモリを増やすことが重要である事も分かります.よりメモリを搭載したGPUを使えば,Llama3 70BとMixtral 8x7bは今回測定された速度より遥かに高速に動作するかも知れません.また,Mixtral 8x22bでは少量のスワップが発生してしまい実用的でない速度になることが予想されるため計測しませんでした.

モデル サイズ GPU1 RAM GPU2 RAM RAM GPU1 GPU2 CPU
Llama3 8B 4.7GB 22.9% 25.2% 1.8% 40%台 40%台 100%
Llama3 70B 40GB 99.5% 88.8% 61.1% たまに20%台 たまに20%台 1085%
Mixtral 8x7b 26GB 93.8% 88.1% 11.3% 10%台 10%台 835%
Mixtral 8x22b 80GB - - スワップが発生 - - -
Command R+ 59GB 96.7% 74.3% 89.9% たまに10%台 たまに10%台 1124%
CodeGemma 5GB 27.6% 33.4% 2.2% 40%台 40%台 100%
Phi-3 Mini 2.3GB 17.3% 16.5% 1.2% 40%台 40%台 100%

感想

ChatGPT3.5と同等,それ以上の大規模言語モデルが自宅のパソコンで動く時代となりました.特に,Llama3 8BとPhi-3は軽量で高速な動作です.これらのモデルならGPUが1枚あれば自宅でも高速に動作することでしょう.また,Llama3 70Bも低速ながら動きます.時間がかかっても問題ないタスクであればLlama3 70Bも十分有用です.

オープンなモデルの日本語の能力は未知数ですが,ベンチマークを見る限り英語での使用に関してはかなり有用ではないかと思われます.英語だけでの使用を考えている方は,ChatGPTやClaude3などのサブスクリプションを契約する必要は無い時代が来たかも知れません.

高速で高性能なモデルが無料で手に入る時代になると,いかにそれを活かすかが我々に問われることになります.
また,OpenAIなどは無料のモデルに対し,どのような優位性を提示できるか興味深いです.オープンなモデルの性能が向上すると,高性能なモデルを提供するビジネスモデルはなくなり,計算資源を提供するビジネスモデルが生き残るかもしれません(すでに2024年4月の段階でそうなっていると言えるかも知れません.巨大なモデルは自宅では動かないので,ChatGPTなどを使うということは巨大なモデルが動くコンピュータを借りていると言えます.).

30
34
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
30
34