Windows 實戰:用 LM Studio API 在 lm-eval-harness 評測 Gemma 4 26B

Josh-avatar-img
發佈於AI
更新 發佈閱讀 20 分鐘

Windows 上評測 Gemma 4 26B:從零到可跑通

如果你和我一樣是在 Windows 環境,硬體是 AMD 顯示核心(例如 Radeon 8060S),又想評測 google/gemma-4-26b-a4b,最穩定的方式不是直接走 CUDA 路徑,而是:

  1. 由 LM Studio 載入模型負責推論
  2. 讓 lm-eval-harness 透過 OpenAI-compatible API 呼叫 LM Studio
  3. 用任務指令做基準測試與結果輸出

這篇整理成「可直接照做」版本,重點是把常見坑一次避開。

先釐清一個常見誤會

lm-eval validate --tasks hellaswag 只會驗證任務設定與資料集配置。 它不會檢查你的 API 是否連得上,也不會測模型推論。

所以正確流程是:

  1. 先 validate 任務
  2. 再測 /v1/models 與 /v1/completions/v1/chat/completions
  3. 最後跑正式評測

你的情境最適合的路線

你的條件是:

  • Windows
  • AMD Radeon 8060S
  • 模型:google/gemma-4-26b-a4b
  • API 位址:http://172.31.160.1:1234

在這種情境下,建議用:

  • local-chat-completions 跑生成型任務(例如 gsm8k
  • local-completions 跑需要 logprobs 的任務(例如 hellaswag
  • 前提是 /v1/completions 回傳中真的有 logprobs

手動步驟版(先看懂流程)

1) 建立環境與安裝

git clone --depth 1 https://github.com/EleutherAI/lm-evaluation-harness.git
Set-Location .\lm-evaluation-harness
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip setuptools wheel
pip install -e .
pip install "lm_eval[api]"

2) 驗證任務

lm-eval validate --tasks hellaswag

若指令找不到,改用:

python -m lm_eval validate --tasks hellaswag

3) 測 API 是否可達

Invoke-RestMethod -Uri "http://172.31.160.1:1234/v1/models" -Method Get

4) 先跑最容易成功的生成型測試(gsm8k)

lm-eval run --model local-chat-completions `
--model_args "model=google/gemma-4-26b-a4b,base_url=http://172.31.160.1:1234/v1/chat/completions,num_concurrent=1,max_retries=3" `
--tasks gsm8k `
--apply_chat_template `
--batch_size 1 `
--limit 20 `
--output_path ".\results\gemma4-gsm8k-chat" `
--log_samples

5) 檢查 hellaswag 所需的 logprobs 能不能用

$body = @{
model = "google/gemma-4-26b-a4b"
prompt = "The quick brown fox"
max_tokens = 1
temperature = 0
logprobs = 1
echo = $true
} | ConvertTo-Json -Depth 5

Invoke-RestMethod -Uri "http://172.31.160.1:1234/v1/completions" `
-Method Post -ContentType "application/json" -Body $body

如果回傳內有 choices[0].logprobs,才能跑 hellaswag。

6) 跑 hellaswag

lm-eval run --model local-completions `
--model_args "model=google/gemma-4-26b-a4b,base_url=http://172.31.160.1:1234/v1/completions,tokenized_requests=False,num_concurrent=1,max_retries=3" `
--tasks hellaswag `
--batch_size 1 `
--limit 100 `
--output_path ".\results\gemma4-hellaswag" `
--log_samples

一鍵執行版(可直接複製貼上)

下面整段可直接貼 PowerShell。 它會自動做:建 venv、安裝、validate、測 API、跑 gsm8k、偵測 logprobs、可用時跑 hellaswag

# =========================
# lm-eval Windows 全流程腳本
# =========================
$ErrorActionPreference = "Stop"
Set-StrictMode -Version Latest

# -------- 可調整參數 --------
$RepoUrl = "https://github.com/EleutherAI/lm-evaluation-harness.git"
$WorkDir = "$HOME\AI\lm-evaluation-harness"
$VenvDir = "$WorkDir\.venv"
$ApiBase = "http://172.31.160.1:1234"
$ModelId = "google/gemma-4-26b-a4b"
$LimitGsm8k = 20
$LimitHellaswag = 100
$RunTag = Get-Date -Format "yyyyMMdd-HHmmss"
$ResultRoot = Join-Path $WorkDir "results\$RunTag"

Write-Host "=== 開始執行 lm-eval 評測流程 ===" -ForegroundColor Cyan

# 允許本次 PowerShell Session 啟用 venv
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force | Out-Null

# 檢查必要工具
if (-not (Get-Command git -ErrorAction SilentlyContinue)) {
throw "找不到 git,請先安裝 Git for Windows。"
}
if (-not (Get-Command python -ErrorAction SilentlyContinue)) {
throw "找不到 python,請先安裝 Python 3.10+ 並加入 PATH。"
}

# 1) 下載或進入專案
if (-not (Test-Path $WorkDir)) {
Write-Host "下載專案到 $WorkDir" -ForegroundColor Yellow
git clone --depth 1 $RepoUrl $WorkDir
}
Set-Location $WorkDir

# 2) 若非 git 倉庫則初始化
if (-not (Test-Path (Join-Path $WorkDir ".git"))) {
Write-Host "偵測到不是 git 倉庫,正在初始化..." -ForegroundColor Yellow
git init | Out-Null
Write-Host "已完成 git 初始化。" -ForegroundColor Green
}

# 3) 建立虛擬環境
if (-not (Test-Path $VenvDir)) {
Write-Host "建立虛擬環境..." -ForegroundColor Yellow
python -m venv $VenvDir
}

$Py = Join-Path $VenvDir "Scripts\python.exe"
if (-not (Test-Path $Py)) {
throw "找不到虛擬環境 Python:$Py"
}

# 4) 安裝套件
Write-Host "安裝/更新套件中..." -ForegroundColor Yellow
& $Py -m pip install --upgrade pip setuptools wheel
& $Py -m pip install -e .
& $Py -m pip install "lm_eval[api]"

# 5) 驗證 task
Write-Host "執行 task 驗證:hellaswag" -ForegroundColor Yellow
& $Py -m lm_eval validate --tasks hellaswag

# 6) 檢查 API 連線與模型清單
Write-Host "檢查 LM Studio API:$ApiBase/v1/models" -ForegroundColor Yellow
$modelsResp = Invoke-RestMethod -Uri "$ApiBase/v1/models" -Method Get -TimeoutSec 30
$modelIds = @()
if ($modelsResp.data) {
$modelIds = @($modelsResp.data | ForEach-Object { $_.id })
}
Write-Host ("API 可見模型: " + ($modelIds -join ", ")) -ForegroundColor Gray

if ($modelIds.Count -eq 0) {
Write-Warning "API 可連線,但未讀到模型清單。請確認 LM Studio 已載入模型。"
}
elseif ($modelIds -notcontains $ModelId) {
Write-Warning "找不到指定模型 $ModelId。請確認 LM Studio 右側 API Model Identifier 完全一致。"
}

# 建立結果資料夾
New-Item -ItemType Directory -Path $ResultRoot -Force | Out-Null

# 7) 先跑 generate 類任務
$OutGsm8k = Join-Path $ResultRoot "gsm8k-chat"
Write-Host "開始評測 gsm8k(local-chat-completions)..." -ForegroundColor Yellow
& $Py -m lm_eval run `
--model local-chat-completions `
--model_args "model=$ModelId,base_url=$ApiBase/v1/chat/completions,num_concurrent=1,max_retries=3" `
--tasks gsm8k `
--apply_chat_template `
--batch_size 1 `
--limit $LimitGsm8k `
--output_path $OutGsm8k `
--log_samples

# 8) 測試 completions 端點是否支援 logprobs
$hasLogprobs = $false
Write-Host "檢查 /v1/completions 與 logprobs 支援..." -ForegroundColor Yellow
try {
$payload = @{
model = $ModelId
prompt = "The quick brown fox jumps over the lazy dog."
max_tokens = 1
temperature = 0
logprobs = 1
echo = $true
} | ConvertTo-Json -Depth 10

$compResp = Invoke-RestMethod `
-Uri "$ApiBase/v1/completions" `
-Method Post `
-ContentType "application/json" `
-Body $payload `
-TimeoutSec 60

if ($compResp.choices -and $compResp.choices.Count -gt 0 -and $null -ne $compResp.choices[0].logprobs) {
$hasLogprobs = $true
}
}
catch {
Write-Warning "測試 /v1/completions 或 logprobs 時發生錯誤:$($_.Exception.Message)"
}

# 9) 若支援 logprobs,跑 hellaswag
if ($hasLogprobs) {
$OutHella = Join-Path $ResultRoot "hellaswag-completions"
Write-Host "偵測到 logprobs 可用,開始評測 hellaswag(local-completions)..." -ForegroundColor Yellow

& $Py -m lm_eval run `
--model local-completions `
--model_args "model=$ModelId,base_url=$ApiBase/v1/completions,tokenized_requests=False,num_concurrent=1,max_retries=3" `
--tasks hellaswag `
--batch_size 1 `
--limit $LimitHellaswag `
--output_path $OutHella `
--log_samples
}
else {
Write-Warning "目前 API 不支援(或未正確回傳)logprobs,已跳過 hellaswag。"
Write-Warning "你仍可先使用 generate 類任務(例如 gsm8k)進行評測。"
}

Write-Host ""
Write-Host "=== 流程完成 ===" -ForegroundColor Green
Write-Host "結果目錄:$ResultRoot" -ForegroundColor Green
Write-Host "你可以用下列指令查看結果檔案:" -ForegroundColor Gray
Write-Host "Get-ChildItem -Path `"$ResultRoot`" -Recurse -File | Select-Object FullName"

常見錯誤與排查重點

  • 出現 Loglikelihood is not supported for chat completions
    代表你用 local-chat-completions 跑了 hellaswag,請改用 local-completions
  • 出現 404
    多半是 base_url 路徑不對。 Chat 請用 /v1/chat/completions,Completions 請用 /v1/completions
  • 出現 model not found
    model= 必須與 LM Studio 的 API Model Identifier 完全一致。
  • validate 成功但 run 失敗
    正常,因為 validate 不測 API,需另做端點測試。

結語

在 Windows + AMD 顯示架構下,LM Studio API + lm-eval-harness 是目前最務實、可維護、可複現的評測組合。 先讓 gsm8k 跑通,再確認 logprobs 後挑戰 hellaswag,能大幅降低排錯成本,也更適合把流程自動化成固定基準測試。

參考資料


留言
avatar-img
Josh的沙龍
15會員
116內容數
分享知識
Josh的沙龍的其他內容
2026/04/08
本文詳解 OpenCode 終端機 AI 工具的斜線指令,涵蓋模型管理、會話控制及代碼審查等核心功能。透過簡單指令即可快速切換 Agent、進行代碼 Review 並優化上下文空間,是開發者提升 AI 輔助開發效率的必備指南。
Thumbnail
2026/04/08
本文詳解 OpenCode 終端機 AI 工具的斜線指令,涵蓋模型管理、會話控制及代碼審查等核心功能。透過簡單指令即可快速切換 Agent、進行代碼 Review 並優化上下文空間,是開發者提升 AI 輔助開發效率的必備指南。
Thumbnail
2026/03/31
YC 執行長 Garry Tan 開源的 gstack 框架,將 AI 代理轉化為高效開發團隊。本文深度解析其內建的 31 項核心技能,助你構建能獨立處理從戰略規劃、設計、品質審查到最終部署與文檔交付的完整 AI 工作流。
Thumbnail
2026/03/31
YC 執行長 Garry Tan 開源的 gstack 框架,將 AI 代理轉化為高效開發團隊。本文深度解析其內建的 31 項核心技能,助你構建能獨立處理從戰略規劃、設計、品質審查到最終部署與文檔交付的完整 AI 工作流。
Thumbnail
2026/03/26
這篇文章解析超能力框架如何把需求澄清方案比較規格撰寫實作計畫與執行交接串成完整流程讓程式代理先思考再動手不只提升可維護性也更適合重視審查協作與決策紀錄的開發團隊並說明導入取捨與方法。
2026/03/26
這篇文章解析超能力框架如何把需求澄清方案比較規格撰寫實作計畫與執行交接串成完整流程讓程式代理先思考再動手不只提升可維護性也更適合重視審查協作與決策紀錄的開發團隊並說明導入取捨與方法。
看更多
你可能也想看
Thumbnail
你是否也曾為了手遊中的限定角色、造型或道具而心動不已,卻又因為不想額外花錢而猶豫不決?在Google Play商店中,琳瑯滿目的遊戲內購選項總是令人難以抗拒,但如果能「不花自己的錢」就能輕鬆儲值,那該有多好?現在,這個夢想不再遙不可及!透過Repocket這款創新的應用程式,你可以將閒置的網路資源轉
Thumbnail
你是否也曾為了手遊中的限定角色、造型或道具而心動不已,卻又因為不想額外花錢而猶豫不決?在Google Play商店中,琳瑯滿目的遊戲內購選項總是令人難以抗拒,但如果能「不花自己的錢」就能輕鬆儲值,那該有多好?現在,這個夢想不再遙不可及!透過Repocket這款創新的應用程式,你可以將閒置的網路資源轉
Thumbnail
文章記錄了作者嘗試導入 AI 代理人「OpenClaw 龍蝦」計畫的經驗,以及因資安、硬體和 API 成本考量而決定暫緩執行的過程。最終,作者轉而聚焦於強化現有硬體的應用,並強調 AI 時代的重點在於問題拆解與串接能力。
Thumbnail
文章記錄了作者嘗試導入 AI 代理人「OpenClaw 龍蝦」計畫的經驗,以及因資安、硬體和 API 成本考量而決定暫緩執行的過程。最終,作者轉而聚焦於強化現有硬體的應用,並強調 AI 時代的重點在於問題拆解與串接能力。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
從實際應用中學習 Python 程式設計,提升技能並建立作品集。文章提供八個循序漸進的 Python 專案範例,涵蓋檔案操作、網路爬蟲、Web 應用、自動化腳本、數據分析、遊戲開發、API 互動及應用程式部署,並附上實戰建議及學習資源。
Thumbnail
從實際應用中學習 Python 程式設計,提升技能並建立作品集。文章提供八個循序漸進的 Python 專案範例,涵蓋檔案操作、網路爬蟲、Web 應用、自動化腳本、數據分析、遊戲開發、API 互動及應用程式部署,並附上實戰建議及學習資源。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
⏳ 番茄鐘學習法:提升專注力、戰勝拖延的高效時間管理技巧! 你是否在學習或工作時容易分心?時間總是流逝得太快,卻覺得自己沒完成多少事情?番茄鐘學習法(Pomodoro Technique) 是一種經過驗證的高效時間管理方法,能幫助你提高專注力、克服拖延、增強記憶力,讓學習與工作更加高效! 📢
Thumbnail
⏳ 番茄鐘學習法:提升專注力、戰勝拖延的高效時間管理技巧! 你是否在學習或工作時容易分心?時間總是流逝得太快,卻覺得自己沒完成多少事情?番茄鐘學習法(Pomodoro Technique) 是一種經過驗證的高效時間管理方法,能幫助你提高專注力、克服拖延、增強記憶力,讓學習與工作更加高效! 📢
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News