1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

どうやらLLM界隈ではこちらがホットらしいです。

この記事では本当に動かしたところまでなので、以下は残項目となっています。

  • Pythonバインディングllama-cpp-pythonのインストール
  • GPUサポート

llama.cppの説明の翻訳

llama.cppのゴールはMacBookで4ビットの整数量子化を用いてLLaMAモデルを実行することです。

  • 依存関係のないプレーンなC/C++実装
  • Appleシリコンが一級市民 - ARM NEON、Accelerate、Metalフレームワークで最適化
  • x86アーキテクチャのためのAVX、AVX2、AVX512サポート
  • F16 / F32精度のミックス
  • 2-bit、3-bit、4-bit、5-bit、6-bit、8-bitの整数量子化をサポート
  • CUDA、Metal、OpenCL GPUのサポート

llama.cppのオリジナル実装は夕方にハックされました。それ以来、多くの貢献のおかげでこのプロジェクトは大きく改善されました。このプロジェクトは主に教育目的であり、ggmlライブラリの新機能を開発するための主要なプレイグラウンドとして機能します。

参考記事

いつもありがとうございます。

インストール

今回はほとんどの作業がWebターミナルです。

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make

モデルのダウンロード

途中でモデルのフォーマットがGGMLからGGUFに変更されたのですね。

cd models
git lfs clone https://huggingface.co/TheBloke/Llama-2-7B-GGUF --include "llama-2-7b.Q4_K_M.gguf"

動作確認

./main -m ./models/Llama-2-7B-GGUF/llama-2-7b.Q4_K_M.gguf --temp 0.1 -p "[INST]pythonで100以下のフィボナッチ数列を計算するコードを生成してください。説明は可能な限り簡潔に。日本語で。[/INST]"

動きました!

..................................................................................................
llama_new_context_with_model: kv self size  =  256.00 MB
llama_new_context_with_model: compute buffer total size =   71.97 MB

system_info: n_threads = 32 / 64 | AVX = 1 | AVX2 = 1 | AVX512 = 1 | AVX512_VBMI = 0 | AVX512_VNNI = 1 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 1 | SSSE3 = 1 | VSX = 0 | 
sampling: repeat_last_n = 64, repeat_penalty = 1.100000, presence_penalty = 0.000000, frequency_penalty = 0.000000, top_k = 40, tfs_z = 1.000000, top_p = 0.950000, typical_p = 1.000000, temp = 0.100000, mirostat = 0, mirostat_lr = 0.100000, mirostat_ent = 5.000000
generate: n_ctx = 512, n_batch = 512, n_predict = -1, n_keep = 0


 [INST]pythonで100以下のフィボナッチ数列を計算するコードを生成してください。説明は可能な限り簡潔に。日本語で。[/INST]

## 問題

フィボナッチ数列の100以下の数を計算するコードを生成してください。説明は可能な限り簡潔に。日本語で。

## 解法

    ```python
    import math

    def fib(n):
        if n == 0: return 0
        elif n == 1: return 1
        else: return fib(n-2) + fib(n-1)

    for i in range(1, 101):
        print(fib(i))
    ```
 [end of text]

llama_print_timings:        load time =   381.75 ms
llama_print_timings:      sample time =   155.39 ms /   156 runs   (    1.00 ms per token,  1003.91 tokens per second)
llama_print_timings: prompt eval time =  1169.73 ms /    65 tokens (   18.00 ms per token,    55.57 tokens per second)
llama_print_timings:        eval time = 10573.97 ms /   155 runs   (   68.22 ms per token,    14.66 tokens per second)
llama_print_timings:       total time = 11973.35 ms
Log end

次のステップ

Pythonバインディングを動かそうとしたのですが、最新のllama-cpp-pythonをインストールしようとするとAttributeError: module 'pathspec' has no attribute 'GitIgnoreSpec'エラーになるんですよね。

%pip install llama-cpp-python 

pathspecの最新バージョンは0.11.2なのですが、こちらにはGitIgnoreSpecが無いようです。

一方、こちらの0.11.3devのドキュメントにはGitIgnoreSpecの記載があります。pipに公開されるのを待とうかと思います。

Databricksクイックスタートガイド

Databricksクイックスタートガイド

Databricks無料トライアル

Databricks無料トライアル

1
3
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
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?