LLM Ollama Vulkan - eiichiromomma/CVMLAB GitHub Wiki
(LLM) Ollama+Vulkan
Ryzen AI 7でOllama
デフォルトだとOllamaはVulkanを無視する設定らしいので,環境変数で有効化してから起動が必要。インストールしてGUIの歯車で,ネットワーク理由を有効化したら,右下のアイコンから終了させる。
Powershellから
$env:OLLAMA_VULKAN=1
$env:OLLAMA_NUM_GPU=1
$env:OLLAMA_CONTEXT_LENGTH=8192
ollama serve
とする。
GLM-OCR
powershellで
ollama pull glm-ocr
$env:OLLAMA_VULKAN=1
$env:OLLAMA_NUM_GPU=1
$env:OLLAMA_CONTEXT_LENGTH=8192
ollama serve
としておく。
Ollamaのみが現状でVulkanで動かせる。 画像をBase64エンコードしてJSONに仕込んで放り込む必要があるのでpowershellの機能を使う。
Ollama serveとは別のPowershellから下記実行する。
ここではsc.pngという画像(適当にスクリーンショットを撮ったもの)がある前提。
$img = [Convert]::ToBase64String([IO.File]::ReadAllBytes("sc.png"))
$jsonPayload = @"
{
"model": "glm-ocr",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "Extract all text and tables as Markdown." },
{ "type": "image_url", "image_url": { "url": "data:image/jpeg;base64,$img" } }
]
}
],
"stream": false
}
"@
Get-Content payload.json -Raw | curl.exe http://localhost:11434/v1/chat/completions `
-H "Content-Type: application/json" `
-d '@-'
モデルがオフロードされたら数秒で結果が返ってくる。
GLM-OCR自体の導入はLLM MLX-VLM GLM-OCRとほぼ同じ。
winget install git
とした後で別のpowershellから
git clone https://github.com/zai-org/GLM-OCR.git
cd GLM-OCR
uv python pin 3.10
notepad pyproject.toml
で3.8を3.10に書き換える。
uv sync
uv pip install -e .
uv add git+https://github.com/huggingface/transformers.git
uv add -U torch torchvision
uv add -U --force-reinstall layoutparser
notepad glmocr/config.yaml
でglmocr/config.yamlの編集が必要で
- ocr_apiのapi_port: 11434
- ocr_apiのrequest_timeout: 600
- max_workers: 1
- page_loaderのmax_tokens: 8192
Ollama 専用の修正も必要
PRも出ているのだが,当然自身のサービスベースの機構なのでOllama使いたい層とはチグハグな状態で,現状だとglmocr/ocr_client.pyのtest_payloadを送ろうとした時点で400を起こすのでmodelを追加する必要がある。
notepad glmocr/ocr_client.py
でtest_payloadに1行追加する
test_payload = {
"model": self.model or "glm-ocr", # modelを追加
"messages": [
{
"role": "user",
"content": [{"type": "text", "text": "hello"}],
}
],
"max_tokens": 10,
"temperature": 0.1,
}
で,いよいよ実行
uv run glmocr parse image_name.png
そこそこ快適でASUSのPCのマニュアル90ページくらいを30分弱で出力できた。