laptop_mac macOS Sonoma
Intermediate
schedule 8 min read
by Alex Rivera • May 14, 2024
LinuxでLlama 3を実行することで、最大限の制御とパフォーマンスを手に入れることができます。ここではllama.cpp — NVIDIA CUDA、AMD ROCm、およびCPUのみの推論をネイティブにサポートする、高度に最適化されたC++推論エンジンを使用します。
Step 1 はじめに
OllamaやLM Studioのようなラッパーは手軽に始めるには最適ですが、これらは基盤となるエンジンを抽象化してしまいます。Linuxハードウェアから最後の一滴まで性能を絞り出したいのであれば、llama.cppをソースから直接コンパイルすることがゴールドスタンダードです。
このガイドでは、NVIDIA CUDAサポートを有効にしたエンジンのコンパイル、Llama 3 8Bモデルのダウンロード、そしてターミナルから直接実行する手順を詳しく解説します。
Step 2 前提条件
まず、コアビルドツールとNVIDIA CUDAツールキットをインストールする必要があります。ターミナルを開き、以下を実行してください:
Terminal
sudo apt update
sudo apt install build-essential git python3-pip
sudo apt install nvidia-cuda-toolkit
NVIDIAドライバーとCUDAが正常に動作しているか確認します:
Step 3 コンパイル
GitHubからllama.cppリポジトリをクローンし、コンパイルを行います。コンパイラがNVIDIA GPUアクセラレーションを有効にしたバイナリをビルドするよう、makeコマンドにLLAMA_CUDA=1フラグを渡します。
Terminal
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make -j$(nproc) LLAMA_CUDA=1
コンパイルが完了すると、llama-cliやllama-serverを含む複数の実行ファイルがルートディレクトリに生成されます。
Step 4 Llama 3ウェイトのダウンロード
llama.cppは.ggufファイル形式を使用します。HuggingFace CLIを使用することで、MetaのLlama 3 8Bモデルをサーバーに安全かつ直接ダウンロードできます。
まず、CLIをインストールします:
Terminal
pip3 install -U "huggingface_hub[cli]"
次に、モデルのQ4_K_M量子化バージョンをダウンロードします。この4ビット量子化は、速度と精度のバランスを完璧に保ちながら、8GBのVRAMに余裕を持って収まります。
Terminal
huggingface-cli download bartowski/Meta-Llama-3-8B-Instruct-GGUF Meta-Llama-3-8B-Instruct-Q4_K_M.gguf --local-dir ./models
Step 5 推論の実行
いよいよLlama 3との対話を始めましょう。ここではllama-cliツールを使用します。
-ngl 99フラグはこのコマンドにおいて最も重要な部分です。これはllama.cppに対して、99レイヤー(8Bモデルでは実質的に全レイヤー)をNVIDIA GPUのVRAMにオフロードするよう指示します。
Terminal
./llama-cli -m ./models/Meta-Llama-3-8B-Instruct-Q4_K_M.gguf \
-n 512 \
-ngl 99 \
--color \
-i -r "User:" \
-p "You are a helpful AI assistant.\n\nUser: Hello!\nAI:"
エンジンが初期化され、モデルをVRAMにロードし、インタラクティブなプロンプトが表示されるのを確認できるはずです。
Step 6 ローカルAPIサーバー
ヘッドレスのUbuntuサーバーでホストしており、モデルにリモートアクセス(またはOpen WebUIのようなUIからのアクセス)したい場合は、組み込みのHTTPサーバーを起動することができます。
Terminal
./llama-server -m ./models/Meta-Llama-3-8B-Instruct-Q4_K_M.gguf -ngl 99 --host 0.0.0.0 --port 8080
高性能なCUDAアクセラレーション対応バックエンドがhttp://YOUR_SERVER_IP:8080でリクエストを待ち受け、OpenAI APIのドロップイン代替として機能します!