llama.cpp
の Python バインディング @ggerganov のllama.cpp
ライブラリの単純な Python バインディング。このパッケージは以下を提供します:
ctypes
インターフェースを介した C API への低レベルのアクセス。ドキュメントは https://llama-cpp-python.readthedocs.io/en/latest で入手できます。
要件:
パッケージをインストールするには、次を実行します。
pip install llama-cpp-python
これにより、ソースからllama.cpp
がビルドされ、この Python パッケージと一緒にインストールされます。
これが失敗した場合は、 pip install
に--verbose
を追加して、完全な cmake ビルド ログを確認してください。
完成品ホイール(新品)
基本的な CPU サポートを備えた事前構築されたホイールをインストールすることも可能です。
pip install llama-cpp-python
--extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cpu
llama.cpp
、推論を高速化するための多数のハードウェア アクセラレーション バックエンドとバックエンド固有のオプションをサポートしています。完全なリストについては、llama.cpp README を参照してください。
すべてのllama.cpp
cmake ビルド オプションは、インストール時にCMAKE_ARGS
環境変数または--config-settings / -C
cli フラグを介して設定できます。
# Linux and Mac
CMAKE_ARGS= " -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS "
pip install llama-cpp-python
# Windows
$ env: CMAKE_ARGS = " -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS "
pip install llama - cpp - python
これらはpip install -C / --config-settings
コマンドで設定し、 requirements.txt
ファイルに保存することもできます。
pip install --upgrade pip # ensure pip is up to date
pip install llama-cpp-python
-C cmake.args= " -DGGML_BLAS=ON;-DGGML_BLAS_VENDOR=OpenBLAS "
# requirements.txt
llama-cpp-python -C cmake.args="-DGGML_BLAS=ON;-DGGML_BLAS_VENDOR=OpenBLAS"
以下に、いくつかの一般的なバックエンド、そのビルド コマンド、および必要な追加の環境変数を示します。
OpenBLAS を使用してインストールするには、インストールする前にGGML_BLAS
およびGGML_BLAS_VENDOR
環境変数を設定します。
CMAKE_ARGS= " -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS " pip install llama-cpp-python
CUDA サポートを使用してインストールするには、インストールする前にGGML_CUDA=on
環境変数を設定します。
CMAKE_ARGS= " -DGGML_CUDA=on " pip install llama-cpp-python
完成品ホイール(新品)
CUDA サポートを備えた事前に構築されたホイールをインストールすることも可能です。システムがいくつかの要件を満たしている限り、次のとおりです。
pip install llama-cpp-python
--extra-index-url https://abetlen.github.io/llama-cpp-python/whl/ < cuda-version >
<cuda-version>
は次のいずれかです。
cu121
: CUDA 12.1cu122
: CUDA 12.2cu123
: CUDA 12.3cu124
: CUDA 12.4cu125
: CUDA 12.5たとえば、CUDA 12.1 ホイールをインストールするには、次のようにします。
pip install llama-cpp-python
--extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu121
Metal (MPS) を使用してインストールするには、インストールする前にGGML_METAL=on
環境変数を設定します。
CMAKE_ARGS= " -DGGML_METAL=on " pip install llama-cpp-python
完成品ホイール(新品)
メタルサポート付きの既成ホイールを取り付けることも可能です。システムがいくつかの要件を満たしている限り、次のとおりです。
pip install llama-cpp-python
--extra-index-url https://abetlen.github.io/llama-cpp-python/whl/metal
AMD カードの hipBLAS / ROCm サポートを使用してインストールするには、インストールする前にGGML_HIPBLAS=on
環境変数を設定します。
CMAKE_ARGS= " -DGGML_HIPBLAS=on " pip install llama-cpp-python
Vulkan サポートを使用してインストールするには、インストールする前にGGML_VULKAN=on
環境変数を設定します。
CMAKE_ARGS= " -DGGML_VULKAN=on " pip install llama-cpp-python
SYCL サポートを使用してインストールするには、インストールする前にGGML_SYCL=on
環境変数を設定します。
source /opt/intel/oneapi/setvars.sh
CMAKE_ARGS= " -DGGML_SYCL=on -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx " pip install llama-cpp-python
RPC サポートを使用してインストールするには、インストール前にGGML_RPC=on
環境変数を設定します。
source /opt/intel/oneapi/setvars.sh
CMAKE_ARGS= " -DGGML_RPC=on " pip install llama-cpp-python
'nmake'
'?'
が見つからないという問題が発生した場合は、または CMAKE_C_COMPILER を使用している場合は、llama.cpp リポジトリで説明されているように w64devkit を抽出し、 pip
install を実行する前にこれらを CMAKE_ARGS に手動で追加できます。
$env:CMAKE_GENERATOR = "MinGW Makefiles"
$env:CMAKE_ARGS = "-DGGML_OPENBLAS=on -DCMAKE_C_COMPILER=C: /w64devkit/bin/gcc.exe -DCMAKE_CXX_COMPILER=C: /w64devkit/bin/g++.exe"
上記の手順を参照して、 CMAKE_ARGS
使用する BLAS バックエンドに設定します。
MacOS Metal GPU のインストールに関する詳細なドキュメントは、docs/install/macos.md で入手できます。
注: Apple Silicon (M1) Mac を使用している場合は、arm64 アーキテクチャをサポートするバージョンの Python がインストールされていることを確認してください。例えば:
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh
bash Miniforge3-MacOSX-arm64.sh
そうしないと、インストール中に llama.cpp x86 バージョンがビルドされ、Apple Silicon (M1) Mac では 10 倍遅くなります。
でインストールしてみてください
CMAKE_ARGS= " -DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_APPLE_SILICON_PROCESSOR=arm64 -DGGML_METAL=on " pip install --upgrade --verbose --force-reinstall --no-cache-dir llama-cpp-python
llama-cpp-python
アップグレードして再構築するには、 --upgrade --force-reinstall --no-cache-dir
フラグをpip install
コマンドに追加して、パッケージがソースから再構築されるようにします。
APIリファレンス
高レベル API は、 Llama
クラスを通じてシンプルなマネージド インターフェイスを提供します。
以下は、基本的なテキスト補完に高レベル API を使用する方法を示す短い例です。
from llama_cpp import Llama
llm = Llama (
model_path = "./models/7B/llama-model.gguf" ,
# n_gpu_layers=-1, # Uncomment to use GPU acceleration
# seed=1337, # Uncomment to set a specific seed
# n_ctx=2048, # Uncomment to increase the context window
)
output = llm (
"Q: Name the planets in the solar system? A: " , # Prompt
max_tokens = 32 , # Generate up to 32 tokens, set to None to generate up to the end of the context window
stop = [ "Q:" , " n " ], # Stop generating just before the model would generate a new question
echo = True # Echo the prompt back in the output
) # Generate a completion, can also call create_completion
print ( output )
デフォルトでは、 llama-cpp-python
OpenAI 互換形式で補完を生成します。
{
"id" : "cmpl-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" ,
"object" : "text_completion" ,
"created" : 1679561337 ,
"model" : "./models/7B/llama-model.gguf" ,
"choices" : [
{
"text" : "Q: Name the planets in the solar system? A: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune and Pluto." ,
"index" : 0 ,
"logprobs" : None ,
"finish_reason" : "stop"
}
],
"usage" : {
"prompt_tokens" : 14 ,
"completion_tokens" : 28 ,
"total_tokens" : 42
}
}
テキスト補完は、 Llama
クラスの__call__
メソッドとcreate_completion
メソッドを通じて利用できます。
from_pretrained
メソッドを使用して、Hugging Face からLlama
モデルをgguf
形式で直接ダウンロードできます。この機能を使用するには、 huggingface-hub
パッケージをインストールする必要があります ( pip install huggingface-hub
)。
llm = Llama . from_pretrained (
repo_id = "Qwen/Qwen2-0.5B-Instruct-GGUF" ,
filename = "*q8_0.gguf" ,
verbose = False
)
デフォルトでは、 from_pretrained
モデルを Huggingface キャッシュ ディレクトリにダウンロードします。その後、 huggingface-cli
ツールを使用してインストールされたモデル ファイルを管理できます。
高レベル API は、チャットを完了するためのシンプルなインターフェイスも提供します。
チャットを完了するには、モデルがメッセージを単一のプロンプトにフォーマットする方法を認識している必要があります。 Llama
クラスは、事前に登録されたチャット形式 (つまり、 chatml
、 llama-2
、 gemma
など) を使用するか、カスタム チャット ハンドラー オブジェクトを提供することによってこれを行います。
モデルは、次の優先順位を使用してメッセージを単一のプロンプトにフォーマットします。
chat_handler
を使用しますchat_format
を使用しますgguf
モデルのメタデータのtokenizer.chat_template
を使用します (ほとんどの新しいモデルで機能するはずですが、古いモデルにはこれがない可能性があります)llama-2
チャット形式にフォールバックします選択したチャット形式を表示するには、 verbose=True
を設定します。
from llama_cpp import Llama
llm = Llama (
model_path = "path/to/llama-2/llama-model.gguf" ,
chat_format = "llama-2"
)
llm . create_chat_completion (
messages = [
{ "role" : "system" , "content" : "You are an assistant who perfectly describes images." },
{
"role" : "user" ,
"content" : "Describe this image in detail please."
}
]
)
チャット完了は、 Llama
クラスのcreate_chat_completion
メソッドを通じて利用できます。
OpenAI API v1 との互換性を確保するには、dict の代わりに pydantic モデルを返すcreate_chat_completion_openai_v1
メソッドを使用します。
チャット応答を有効な JSON または特定の JSON スキーマのみに制限するには、 create_chat_completion
のresponse_format
引数を使用します。
次の例では、応答を有効な JSON 文字列のみに制限します。
from llama_cpp import Llama
llm = Llama ( model_path = "path/to/model.gguf" , chat_format = "chatml" )
llm . create_chat_completion (
messages = [
{
"role" : "system" ,
"content" : "You are a helpful assistant that outputs in JSON." ,
},
{ "role" : "user" , "content" : "Who won the world series in 2020" },
],
response_format = {
"type" : "json_object" ,
},
temperature = 0.7 ,
)
応答を特定の JSON スキーマにさらに制限するには、 response_format
引数のschema
プロパティにスキーマを追加します。
from llama_cpp import Llama
llm = Llama ( model_path = "path/to/model.gguf" , chat_format = "chatml" )
llm . create_chat_completion (
messages = [
{
"role" : "system" ,
"content" : "You are a helpful assistant that outputs in JSON." ,
},
{ "role" : "user" , "content" : "Who won the world series in 2020" },
],
response_format = {
"type" : "json_object" ,
"schema" : {
"type" : "object" ,
"properties" : { "team_name" : { "type" : "string" }},
"required" : [ "team_name" ],
},
},
temperature = 0.7 ,
)
高レベル API は、OpenAI 互換の関数とツールの呼び出しをサポートします。これはfunctionary
事前トレーニング済みモデルのチャット形式、または汎用のchatml-function-calling
チャット形式を通じて可能です。
from llama_cpp import Llama
llm = Llama ( model_path = "path/to/chatml/llama-model.gguf" , chat_format = "chatml-function-calling" )
llm . create_chat_completion (
messages = [
{
"role" : "system" ,
"content" : "A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions. The assistant calls functions with appropriate input when necessary"
},
{
"role" : "user" ,
"content" : "Extract Jason is 25 years old"
}
],
tools = [{
"type" : "function" ,
"function" : {
"name" : "UserDetail" ,
"parameters" : {
"type" : "object" ,
"title" : "UserDetail" ,
"properties" : {
"name" : {
"title" : "Name" ,
"type" : "string"
},
"age" : {
"title" : "Age" ,
"type" : "integer"
}
},
"required" : [ "name" , "age" ]
}
}
}],
tool_choice = {
"type" : "function" ,
"function" : {
"name" : "UserDetail"
}
}
)
このモデル セット用の gguf 変換されたさまざまなファイルは、ここにあります。 Functionary は、関数をインテリジェントに呼び出すことができ、提供された関数の出力を分析して一貫した応答を生成することもできます。 Functionary のすべての v2 モデルは、並列関数呼び出しをサポートしています。 Llama クラスを初期化するときに、 chat_format
にfunctionary-v1
またはfunctionary-v2
いずれかを指定できます。
llama.cpp と HuggingFace のトークナイザーの間に矛盾があるため、機能用に HF トークナイザーを提供する必要があります。 LlamaHFTokenizer
クラスを初期化し、Llama クラスに渡すことができます。これは、Llama クラスで使用されるデフォルトの llama.cpp トークナイザーをオーバーライドします。トークナイザー ファイルは、gguf ファイルをホストするそれぞれの HF リポジトリにすでに含まれています。
from llama_cpp import Llama
from llama_cpp . llama_tokenizer import LlamaHFTokenizer
llm = Llama . from_pretrained (
repo_id = "meetkai/functionary-small-v2.2-GGUF" ,
filename = "functionary-small-v2.2.q4_0.gguf" ,
chat_format = "functionary-v2" ,
tokenizer = LlamaHFTokenizer . from_pretrained ( "meetkai/functionary-small-v2.2-GGUF" )
)
注: Functionary で使用されるデフォルトのシステム メッセージは、Functionary チャット ハンドラーに自動的に追加されるため、提供する必要はありません。したがって、メッセージには、モデルに追加のコンテキスト (日時など) を提供するチャット メッセージやシステム メッセージだけが含まれている必要があります。
llama-cpp-python
言語モデルがテキストと画像の両方から情報を読み取ることができる llava1.5 などをサポートしています。
以下は、サポートされているマルチモーダル モデルと、それぞれのチャット ハンドラー (Python API) およびチャット形式 (サーバー API) です。
モデル | LlamaChatHandler | chat_format |
---|---|---|
llava-v1.5-7b | Llava15ChatHandler | llava-1-5 |
llava-v1.5-13b | Llava15ChatHandler | llava-1-5 |
llava-v1.6-34b | Llava16ChatHandler | llava-1-6 |
ムーンドリーム2 | MoondreamChatHandler | moondream2 |
ナノラバ | NanollavaChatHandler | nanollava |
ラマ-3-ビジョン-アルファ | Llama3VisionAlphaChatHandler | llama-3-vision-alpha |
minicpm-v-2.6 | MiniCPMv26ChatHandler | minicpm-v-2.6 |
次に、カスタム チャット ハンドラーを使用してクリップ モデルを読み込み、チャット メッセージと画像を処理する必要があります。
from llama_cpp import Llama
from llama_cpp . llama_chat_format import Llava15ChatHandler
chat_handler = Llava15ChatHandler ( clip_model_path = "path/to/llava/mmproj.bin" )
llm = Llama (
model_path = "./path/to/llava/llama-model.gguf" ,
chat_handler = chat_handler ,
n_ctx = 2048 , # n_ctx should be increased to accommodate the image embedding
)
llm . create_chat_completion (
messages = [
{ "role" : "system" , "content" : "You are an assistant who perfectly describes images." },
{
"role" : "user" ,
"content" : [
{ "type" : "text" , "text" : "What's in this image?" },
{ "type" : "image_url" , "image_url" : { "url" : "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg" } }
]
}
]
)
from_pretrained
メソッドを使用して、Hugging Face Hub からモデルをプルすることもできます。
from llama_cpp import Llama
from llama_cpp . llama_chat_format import MoondreamChatHandler
chat_handler = MoondreamChatHandler . from_pretrained (
repo_id = "vikhyatk/moondream2" ,
filename = "*mmproj*" ,
)
llm = Llama . from_pretrained (
repo_id = "vikhyatk/moondream2" ,
filename = "*text-model*" ,
chat_handler = chat_handler ,
n_ctx = 2048 , # n_ctx should be increased to accommodate the image embedding
)
response = llm . create_chat_completion (
messages = [
{
"role" : "user" ,
"content" : [
{ "type" : "text" , "text" : "What's in this image?" },
{ "type" : "image_url" , "image_url" : { "url" : "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg" } }
]
}
]
)
print ( response [ "choices" ][ 0 ][ "text" ])
注: マルチモーダル モデルは、ツール呼び出しと JSON モードもサポートしています。
画像は、base64 でエンコードされたデータ URI として渡すことができます。次の例は、これを行う方法を示しています。
import base64
def image_to_base64_data_uri ( file_path ):
with open ( file_path , "rb" ) as img_file :
base64_data = base64 . b64encode ( img_file . read ()). decode ( 'utf-8' )
return f"data:image/png;base64, { base64_data } "
# Replace 'file_path.png' with the actual path to your PNG file
file_path = 'file_path.png'
data_uri = image_to_base64_data_uri ( file_path )
messages = [
{ "role" : "system" , "content" : "You are an assistant who perfectly describes images." },
{
"role" : "user" ,
"content" : [
{ "type" : "image_url" , "image_url" : { "url" : data_uri }},
{ "type" : "text" , "text" : "Describe this image in detail please." }
]
}
]
llama-cpp-python
モデルがドラフト モデルに基づいて補完を生成できるようにする投機的デコードをサポートしています。
投機的デコーディングを使用する最も速い方法は、 LlamaPromptLookupDecoding
クラスを使用することです。
これを初期化中にドラフト モデルとしてLlama
クラスに渡すだけです。
from llama_cpp import Llama
from llama_cpp . llama_speculative import LlamaPromptLookupDecoding
llama = Llama (
model_path = "path/to/model.gguf" ,
draft_model = LlamaPromptLookupDecoding ( num_pred_tokens = 10 ) # num_pred_tokens is the number of tokens to predict 10 is the default and generally good for gpu, 2 performs better for cpu-only machines.
)
テキスト埋め込みを生成するには、 create_embedding
またはembed
使用します。これらが適切に機能するには、モデルの作成時にコンストラクターにembedding=True
を渡す必要があることに注意してください。
import llama_cpp
llm = llama_cpp . Llama ( model_path = "path/to/model.gguf" , embedding = True )
embeddings = llm . create_embedding ( "Hello, world!" )
# or create multiple embeddings at once
embeddings = llm . create_embedding ([ "Hello, world!" , "Goodbye, world!" ])
Transformer スタイルのモデルにおける埋め込みには、トークン レベルとシーケンス レベルという 2 つの主要な概念があります。シーケンス レベルの埋め込みは、通常は平均化するか最初のトークンを使用して、トークン レベルの埋め込みを一緒に「プール」することによって生成されます。
明示的に埋め込みに対応したモデルは通常、デフォルトでシーケンス レベルの埋め込みを、入力文字列ごとに 1 つずつ返します。テキスト生成用に設計されたモデルなどの非埋め込みモデルは、通常、各シーケンスのトークンごとに 1 つずつ、トークン レベルの埋め込みのみを返します。したがって、戻り値の型の次元は、トークン レベルの埋め込みでは 1 つ高くなります。
場合によっては、モデル作成時にpooling_type
フラグを使用してプーリング動作を制御できます。 LLAMA_POOLING_TYPE_NONE
を使用すると、任意のモデルからのトークン レベルの埋め込みを保証できます。逆に、世代指向モデルを取得してシーケンス レベルの埋め込みを生成することは現在不可能ですが、プーリングはいつでも手動で行うことができます。
Llama モデルのコンテキスト ウィンドウは、一度に処理できるトークンの最大数を決定します。デフォルトでは、これは 512 トークンに設定されていますが、要件に基づいて調整できます。
たとえば、より大きなコンテキストを操作したい場合は、Llama オブジェクトの初期化時に n_ctx パラメータを設定することでコンテキスト ウィンドウを拡張できます。
llm = Llama ( model_path = "./models/7B/llama-model.gguf" , n_ctx = 2048 )
llama-cpp-python
OpenAI API のドロップイン代替として機能することを目的とした Web サーバーを提供します。これにより、llama.cpp 互換モデルを OpenAI 互換クライアント (言語ライブラリ、サービスなど) で使用できるようになります。
サーバー パッケージをインストールして開始するには、次の手順を実行します。
pip install ' llama-cpp-python[server] '
python3 -m llama_cpp.server --model models/7B/llama-model.gguf
上記のハードウェア アクセラレーションのセクションと同様に、次のように GPU (cuBLAS) サポートを使用してインストールすることもできます。
CMAKE_ARGS= " -DGGML_CUDA=on " FORCE_CMAKE=1 pip install ' llama-cpp-python[server] '
python3 -m llama_cpp.server --model models/7B/llama-model.gguf --n_gpu_layers 35
http://localhost:8000/docs に移動して、OpenAPI ドキュメントを参照してください。
0.0.0.0
にバインドしてリモート接続を有効にするには、 python3 -m llama_cpp.server --host 0.0.0.0
を使用します。同様に、ポート (デフォルトは 8000) を変更するには、 --port
を使用します。
おそらく、プロンプト形式も設定する必要があるでしょう。チャットmlの場合は、次を使用します
python3 -m llama_cpp.server --model models/7B/llama-model.gguf --chat_format chatml
これにより、モデルが期待する方法に従ってプロンプトがフォーマットされます。プロンプトの形式はモデル カードにあります。使用可能なオプションについては、llama_cpp/llama_chat_format.py を参照し、「@register_chat_format」で始まる行を探してください。
huggingface-hub
がインストールされている場合は、 --hf_model_repo_id
フラグを使用して Hugging Face Hub からモデルをロードすることもできます。
python3 -m llama_cpp.server --hf_model_repo_id Qwen/Qwen2-0.5B-Instruct-GGUF --model ' *q8_0.gguf '
Docker イメージは GHCR で入手できます。サーバーを実行するには:
docker run --rm -it -p 8000:8000 -v /path/to/models:/models -e MODEL=/models/llama-model.gguf ghcr.io/abetlen/llama-cpp-python:latest
termux 上の Docker (root が必要) が、現在これを電話で実行する唯一の既知の方法です。termux サポートの問題を参照してください。
APIリファレンス
低レベル API はllama.cpp
によって提供される C API に直接バインディングされるctypes
です。低レベル API 全体は llama_cpp/llama_cpp.py にあり、llama.h の C API を直接反映しています。
以下は、低レベル API を使用してプロンプトをトークン化する方法を示す短い例です。
import llama_cpp
import ctypes
llama_cpp . llama_backend_init ( False ) # Must be called once at the start of each program
params = llama_cpp . llama_context_default_params ()
# use bytes for char * params
model = llama_cpp . llama_load_model_from_file ( b"./models/7b/llama-model.gguf" , params )
ctx = llama_cpp . llama_new_context_with_model ( model , params )
max_tokens = params . n_ctx
# use ctypes arrays for array params
tokens = ( llama_cpp . llama_token * int ( max_tokens ))()
n_tokens = llama_cpp . llama_tokenize ( ctx , b"Q: Name the planets in the solar system? A: " , tokens , max_tokens , llama_cpp . c_bool ( True ))
llama_cpp . llama_free ( ctx )
低レベル API の使用例については、サンプル フォルダーを参照してください。
ドキュメントは https://llama-cpp-python.readthedocs.io/ から入手できます。ドキュメントに問題が見つかった場合は、問題を報告するか、PR を送信してください。
このパッケージは現在鋭意開発中ですので、あらゆる貢献を歓迎します。
まず、リポジトリのクローンを作成し、編集可能/開発モードでパッケージをインストールします。
git clone --recurse-submodules https://github.com/abetlen/llama-cpp-python.git
cd llama-cpp-python
# Upgrade pip (required for editable mode)
pip install --upgrade pip
# Install with pip
pip install -e .
# if you want to use the fastapi / openapi server
pip install -e .[server]
# to install all optional dependencies
pip install -e .[all]
# to clear the local build cache
make clean
また、 vendor/llama.cpp
サブモジュールで目的のコミットをチェックアウトし、 make clean
およびpip install -e .
実行することで、 llama.cpp
の特定のコミットをテストすることもできます。また。 llama.h
API に変更を加える場合は、新しい API に合わせてllama_cpp/llama_cpp.py
ファイルを変更する必要があります (他の場所で追加の変更が必要になる場合があります)。