1、ダウンロード#
まず、huggingface からモデルをダウンロードします。元のモデルや他のバリエーションをダウンロードすることができますが、私は llama3-70B のバリエーションをダウンロードします。全体のサイズは約 130G です。
huggingface-cli download cognitivecomputations/dolphin-2.9.1-llama-3-70b --cache-dir ./model
もし中国のネットワークを使用している場合は、huggingface プロキシhttps://hf-mirror.com/を使用してください。
2、llama.cpp のインストール#
GitHub からダウンロードしてインストールします:https://github.com/ggerganov/llama.cpp
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make
インストールが完了しました。
3、モデルを ggml 形式に変換する#
llama.cpp ディレクトリにいることを確認してください。
python convert.py huggingfaceモデルディレクトリ \
--outfile moxing.gguf \
--outtype f16 --vocab-type bpe
#例
python convert.py ./model/models--cognitivecomputations--dolphin-2.9.1-llama-3-70b/snapshots/3f2d2fae186870be37ac83af1030d00a17766929 \
--outfile ./GGUF/dolphin-2.9.1-llama-3-70b-f16.gguf \
--outtype f16 --vocab-type bpe
時間がかかるかもしれませんが、完了すると dolphin-2.9.1-llama-3-70b-f16.gguf
ファイルが生成されます。サイズは変わらず 130G ですが、実行可能です。ただし、140G 以上の VRAM が必要です。一般的な GPU では実行できないため、ファイルを量子化して容量を減らします(品質は若干低下します)。
4、GGUF モデルの量子化#
まず、品質を列挙します。
- q2_k: 特定のテンソルは高い精度で設定され、他のテンソルは基本レベルの精度を保ちます。
- q3_k_l、q3_k_m、q3_k_s: これらのバリエーションは、異なるテンソルに異なる精度レベルを使用し、パフォーマンスと効率のバランスを取ります。
- q4_0: 初期の量子化スキームで、4 ビットの精度を使用します。
- q4_1 および q4_k_m、q4_k_s: これらは、リソース使用をバランスさせるための異なる精度と推論速度を提供します。
- q5_0、q5_1、q5_k_m、q5_k_s: これらのバージョンは、より高い精度を保証しながら、より多くのリソースを使用し、推論速度が遅くなります。
- q6_k および q8_0: これらは最高の精度を提供しますが、高いリソース消費と遅い速度のため、すべてのユーザーに適しているとは限りません。
ここでは Q4_K_M スキームを使用します。
まだ llama.cpp ディレクトリにいることを確認し、実行可能ファイル quantize があれば、実行権限を与えます。
./quantize ./GGUF/dolphin-2.9.1-llama-3-70b-f16.gguf ./GGUF/dolphin-2.9.1-llama-3-70b-Q4_K_M.gguf Q4_K_M
量子化が完了すると、ファイルサイズは約 40G になります。これで 48G の VRAM を持つ GPU で実行できるようになりました。コストが半分になりました。
5、推論の実行#
llama.cpp を使用して推論を実行することもできますが、gguf にはより友好的な ollama を使用することもできます。具体的なコードは公式の GitHub:https://github.com/ollama/ollamaを参照してください。
結論#
これで最初の部分が完了しました。問題がある場合は、コメントセクションでディスカッションしてください。
この記事はMix Spaceから xLog に同期されました。
元のリンクはhttps://sunx.ai/posts/nlp/llama70bです。