[OSS紹介#47] llama-cpp-python:Pythonで使いやすくなった言語モデルライブラリの魅力とは

この記事について

この記事では、オープンソースソフトウェア(OSS)の魅力的なツールを定期的に紹介していくシリーズの第47回となります。今回は、既に紹介した「llama.cpp」や「node-llama-cpp」のPythonバインディングである「llama-cpp-python」に焦点を当てます。

ソフトウェア開発において、開発者の生産性を向上させるために多くのツールが日々登場していますが、その中でも特に「llama.cpp」は注目に値します。このツールは、テキスト補完や多様なモデルのサポートを提供し、開発者がAIと協力してより効率的なコード生成や問題解決を行える環境を整えています。

特に、llama.cppのPythonバインディングは、使いやすさと柔軟性を兼ね備えており、C APIへの低レベルアクセスやOpenAIに類似したAPIを通じた高レベル操作をサポートしています。これにより、開発者はより直感的にツールを扱うことができ、さまざまなアプリケーションへ容易に組み込むことが可能です。今回の紹介を通じて、開発者にとっての利便性や実際の活用方法を探っていきます。

リンク:https://github.com/abetlen/llama-cpp-python


本コンテンツは、弊社AI開発ツール「IXV」を用いたOSSツール紹介です。情報の正確性には努めておりますが、内容に誤りが含まれる可能性がございますのでご了承ください。

1. llama-cpp-pythonとは

llama.cppは、C言語で実装された高性能な言語モデルライブラリであり、Pythonバインディングであるllama-cpp-pythonを通じて、Pythonから簡単に利用することができます。このツールは、低レベルのC APIへのアクセスを提供しつつ、高レベルのテキスト補完APIも備えています。ユーザは、OpenAIのAPIに似たインターフェースを利用して、テキスト生成やチャットボットの実装が可能です。さらに、複数のモデルをサポートし、マルチモーダル機能やファンクションコールにも対応しています。

2. セットアップ手順

2.1 必要な環境

llama-cpp-pythonを使用するには以下の環境が必要です。
– Python 3.8以上
– Cコンパイラ
– Linux: gccまたはclang
– Windows: Visual StudioまたはMinGW
– MacOS: Xcode

2.2 インストール手順

まず、以下のコマンドを実行してパッケージをインストールします。

pip install llama-cpp-python

これにより、llama.cppがソースからビルドされ、Pythonパッケージと共にインストールされます。エラーが発生した場合は、--verboseオプションを追加して詳細なビルドログを確認してください。

また、基本的なCPUサポートを持つ事前ビルド済みホイールをインストールすることも可能です。

pip install llama-cpp-python --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cpu

2.3 環境設定

llama.cppは、推論を高速化するためのハードウェアアクセラレーションバックエンドをサポートしています。詳細は、llama.cppのREADMEを参照してください。

以下は、OpenBLASバックエンドを利用するための環境変数設定例です。

CMAKE_ARGS="-DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS" pip install llama-cpp-python

3. 簡単な使い方

3.1 高レベルAPIの利用

llama-cpp-pythonの高レベルAPIを使って簡単にテキスト補完を行うことができます。以下はその簡単な例です。

from llama_cpp import Llama

llm = Llama(model_path="./models/7B/llama-model.gguf")
output = llm("Q: 太陽系の惑星を挙げよ。A: ", max_tokens=32, stop=["Q:", "\n"], echo=True)
print(output)

このコードは、指定されたプロンプトに基づいて最大32トークンの応答を生成します。

3.2 モデルの読み込み

Hugging Face HubからLlamaモデルを直接ダウンロードすることもできます。

llm = Llama.from_pretrained(repo_id="Qwen/Qwen2-0.5B-Instruct-GGUF", filename="*q8_0.gguf")

3.3 チャット補完

チャット補完を行うには、create_chat_completionメソッドを使用します。以下はその例です。

llm.create_chat_completion(
    messages=[
        {"role": "system", "content": "あなたは完璧に画像を説明するアシスタントです。"},
        {"role": "user", "content": "この画像を詳細に説明してください。"}
    ]
)

4. 結論

llama-cpp-pythonは、強力な言語モデルであるllama.cppのPythonバインディングとして、ユーザに使いやすいAPIを提供します。テキスト生成やチャットボットの実装だけでなく、多様な機能を活用することで、様々なアプリケーションに応用可能です。特に、OpenAI APIとの互換性があるため、既存のアプリケーションを容易に移行することができます。これにより、開発者はより効率的に高品質なAIソリューションを構築することができます。