Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

devnote

Hugging Face

  • モデルをダウンロードするとすぐに容量不足になる.
  • 環境変数 HF_HOME で変更できる.デフォルトは "~/.cache/huggingface"
  • またはシンボリックリンクを作成する

llama.cpp

GitHub - ggerganov/llama.cpp: LLM inference in C/C++

  • LLM inference in C/C++.
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
mkdir build
cd build
cmake ..
cmake --build . --config Release
  • CUDA を有効にする場合
cmake .. -DGGML_CUDA=ON -T="v142"
cmake --build . --config Release

以下のようなエラーが出ることがある

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2\include\crt/host_config.h(157): fatal error C1189: #error: -- unsupported Microsoft Visual Studio version! Only the versions between 2017 and 2022 (inclusive) are supported! The nvcc flag '-allow-unsupported-compiler' can be used to override this version check; however, using an unsupported host compiler may cause compilation failure or incorrect run time execution.  Use at your own risk.

要約すると “unsupported Microsoft Visual Studio version!” とのこと.どうやらCUDAとVisualStudio のバージョンが曖昧らしい.そのため、 -T="v142" を指定する.

また、検索すると CUDA を有効にする場合 LLAMA_CUBLAS を指定すると書かれているものが多いが、現在は非推奨で代わりに GGML_CUDA を指定する.ちなみに GGML は作者の名前と合わせて “GGerganov Machine Learning” らしい

CUDA(Compute Unified Device Architecture)はNVIDIAのGPUコンピューティング用プログラミングモデルおよびプラットフォームのこと.BLAS(Basic Linear Algebra Subprograms)は線形代数を高速に計算するライブラリ.cuBLASはBLASをCUDAで高速に計算するライブラリのこと.

-j オプションを追加するとヒープが足りなくなる

ビルドが終わったらインストール.ビルドディレクトリで以下を実行

cmake --install . --prefix ..

llama-cpp-python

GitHub - abetlen/llama-cpp-python: Python bindings for llama.cpp

  • llama.cpp を python から扱えるようにしたもの.標準ではGPUを使わない設定でビルドする.
  • 事前にビルドされたバイナリをインストールするオプションが追加された.CUDAのバージョンに合わせてインストールする
pip install llama-cpp-python \
  --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/<cuda-version>

cuda 12.1

pip install llama-cpp-python --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu121
CUDA Version is 12.1, 12.2, 12.3, or 12.4
Python Version is 3.10, 3.11 or 3.12

SGLang

GitHub - sgl-project/sglang: SGLang is a fast serving framework for large language models and vision language models.

Token

OpenAI の場合、tiktoken を使う。

import pypaperclip
import tiktoken

def count_clipboard_tokens():
    # クリップボードからテキストを取得
    text = pyperclip.paste()

    if not text:
        print("クリップボードが空です")
        return

    enc = tiktoken.encoding_for_model("gpt-4o")
    tokens = enc.encode(text)
    print(f"トークン数 (ChatGPT): {len(tokens)}")

Gemini の場合、API を使用

import os
import pypaperclip
from google import genai

def count_clipboard_tokens():
    # クリップボードからテキストを取得
    text = pyperclip.paste()

    if not text:
        print("クリップボードが空です")
        return

    client = genai.Client(api_key=os.environ["GOOGLE_API_KEY"])
    result = client.models.count_tokens(model="gemini-2.5-pro", contents=text)
    print(f"トークン数 (Gemini): {result.total_tokens}")