본문으로 건너뛰기

Run Card 명세

핵심 요약. Run card는 벤치마킹의 최소 단위로, 하나의 평가 실행에 대한 전체 구성, 항목별 결과, 집계 점수를 기록하는 JSON 문서예요. 이 페이지에서는 스키마, 필드, 핑거프린팅 메커니즘, 점수 구조를 설명해요. 표준 정의는 Benchmark 명세를 참고하세요.

Run card는 단일 평가 실행의 완전한 기록이에요. 실험을 이해하고, 재현하고, 검증하는 데 필요한 모든 것(구성, 점수, 개별 결과, 토큰 사용량, 환경 메타데이터)을 담고 있어요.

스키마 버전: 2.0

:::info 권위 있는 스키마 Benchmark 명세가 run card 스키마의 단일 진실 공급원이에요. 메트릭 정의, composite 가중치, 품질 등급은 Scoring 명세를 참고하세요. 이 페이지에서는 현재 구현 내용을 설명해요. :::


최상위 필드

FieldTypeDescription
run_idstring실행 시작 시 생성되는 UUID v4
harness_versionstring이 card를 생성한 harness의 시맨틱 버전(예: 2.0)
model_slugstring실행에 사용된 모델 슬러그(예: google/gemini-3.1-pro)
model_idstringAPI가 반환한 확정된 모델 식별자(예: gemini-3.1-pro-001)
conditionstring실험 레이블(예: baseline, coached-v3, few-shot)
timestampstring실행이 시작된 ISO 8601 UTC 타임스탬프
elapsed_secondsnumber전체 실행의 실제 경과 시간
{
"run_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"harness_version": "2.0",
"model_slug": "google/gemini-3.1-pro",
"model_id": "gemini-3.1-pro-001",
"condition": "baseline",
"timestamp": "2026-06-01T03:22:41Z",
"elapsed_seconds": 142.7
}

dataset

평가 데이터셋을 식별하고 SHA-256을 통해 특정 콘텐츠 버전에 고정해요.

FieldTypeDescription
idstring데이터셋 식별자(예: edtekla-dev-v1)
versionstring데이터셋 버전 문자열
language_pairstring표시 레이블(예: EN→CRK)
sha256string데이터셋 파일 내용의 SHA-256 해시. 사용된 정확한 데이터를 보장해요
entry_countnumber데이터셋의 항목 수
// Example using master_corpus.json (62 gold + 342 textbook = 404)
{
"dataset": {
"id": "edtekla-dev-v1",
"version": "1.0",
"language_pair": "EN→CRK",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"entry_count": 404
}
}

config

이 실행에 사용된 API 및 배치 구성이에요.

FieldTypeDescription
api_providerstringAPI 공급자 이름(예: openrouter)
temperaturenumber샘플링 temperature
max_tokensnumbercompletion당 최대 토큰 수
batch_sizenumber동시 배치당 항목 수
concurrencynumber최대 병렬 API 요청 수
coaching_filestringcoaching 프롬프트 파일 경로(사용된 경우)
method_pathstringmethod 플러그인 디렉터리 경로(사용된 경우)
fst_retriesnumberFST 재시도 횟수
{
"config": {
"api_provider": "openrouter",
"temperature": 0.0,
"max_tokens": 32768,
"batch_size": 25,
"concurrency": 8
}
}

:::info 게시된 Run Card에는 method_config가 포함돼요 run card가 mt-eval publish를 통해 게시되면 publish.py가 표준 8개 필드의 MethodConfig를 담은 method_config 블록을 삽입해요. 이를 통해 마찰 없는 리더보드 설치가 가능해져요. 누구나 게시된 card에서 직접 method를 재현할 수 있어요.

{
"method_config": {
"model": "gemini-pro",
"temperature": 0.0,
"batchSize": 25,
"register": "Formal Plains Cree. Use SRO orthography.",
"coachingFile": "prompts/crk-coaching-v8.txt",
"coachingPrompt": null,
"promptContext": "champollion",
"qualityTier": "verified"
}
}

모든 필드는 camelCase를 사용하며 표준 MethodConfig 스키마를 따라요(Method 구축하기 참고). :::


system_prompt_sha256 / system_prompt_used

FieldTypeDescription
system_prompt_sha256string시스템 프롬프트의 SHA-256 해시. 핑거프린트에 포함돼요
system_prompt_usedstring모델에 전송된 전체 시스템 프롬프트 텍스트

프롬프트 해시는 핑거프린트의 일부예요. 다른 모든 설정이 일치하더라도 프롬프트가 다른 두 실행은 서로 다른 핑거프린트를 갖게 돼요.


fingerprint

재현성 식별자예요. 핑거프린트가 동일한 두 실행은 같은 실험 설정을 사용한 거예요.

FieldTypeDescription
hashstring정렬된 구성 요소들의 SHA-256 해시
componentsobject해시된 입력 값들

핑거프린트 구성 요소

ComponentDescription
dataset_sha256데이터셋 파일의 해시
model_slug사용된 모델
condition실험 조건 레이블
system_prompt_sha256시스템 프롬프트의 해시
temperature샘플링 temperature
harness_versionharness 버전
{
"fingerprint": {
"hash": "7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069",
"components": {
"dataset_sha256": "e3b0c44298fc1c14...",
"model_slug": "google/gemini-3.1-pro",
"condition": "baseline",
"system_prompt_sha256": "abc123...",
"temperature": 0.0,
"harness_version": "2.0"
}
}
}

:::info 핑거프린트 ≠ Run Card 해시 핑거프린트는 실험 구성을 식별해요. run_card_hash결과 파일의 무결성을 검증해요. 자세한 내용은 핑거프린트 vs Run Card 해시를 참고하세요. :::


scores

전체 실행에 대한 집계 메트릭이에요.

최상위 점수

FieldTypeDescription
totalnumber평가된 총 항목 수
exact_matchesnumber출력이 gold standard와 정확히 일치한 항목 수
exact_match_ratenumberexact_matches / total (0.0–1.0)
fst_acceptednumberFST 분석기가 출력을 수용한 항목 수
fst_acceptance_ratenumberfst_accepted / total (0.0–1.0). FST 분석기를 사용하지 않은 경우 null
chrf_plus_plusnumber코퍼스 수준의 chrF++ 점수 (0–100)
errorsnumber실패한 항목 수(API 오류, 타임아웃 등)
avg_latency_secondsnumber전체 항목의 평균 응답 시간
median_latency_secondsnumber중앙값 응답 시간
p95_latency_secondsnumber95번째 백분위수 응답 시간

by_difficulty

난이도 등급별로 세분화된 점수예요. 각 키(정수 1–5)는 최상위 점수와 동일한 메트릭 필드를 담고 있어요.

{
"by_difficulty": {
"1": {
"total": 20,
"exact_matches": 8,
"exact_match_rate": 0.40,
"chrf_plus_plus": 68.2,
"fst_accepted": 18,
"fst_acceptance_rate": 0.90
},
"2": { ... },
"3": { ... },
"4": { ... },
"5": { ... }
}
}

by_provenance

항목 출처별로 세분화된 점수예요. 각 키(예: gold_standard, textbook)는 동일한 메트릭 필드를 담고 있어요.

{
"by_provenance": {
"gold_standard": {
"total": 80,
"exact_matches": 10,
"exact_match_rate": 0.125,
"chrf_plus_plus": 44.8
},
"textbook": { ... }
}
}

totals

전체 실행에 대한 토큰 사용량 및 비용 추적이에요.

FieldTypeDescription
prompt_tokensnumber전체 API 호출의 총 입력 토큰 수
completion_tokensnumber총 출력 토큰 수
reasoning_tokensnumberchain-of-thought 추론에 사용된 토큰 수(모델에 따라 다르며, 대부분의 모델에서는 0)
cached_tokensnumber공급자의 프롬프트 캐시에서 제공된 토큰 수
total_cost_usdnumberUSD 기준 총 비용(API가 보고한 값)
cost_per_entry_usdnumbertotal_cost_usd / entry_count
reasoning_rationumberreasoning_tokens / completion_tokens (0.0–1.0)
{
"totals": {
"prompt_tokens": 48200,
"completion_tokens": 3100,
"reasoning_tokens": 0,
"cached_tokens": 12000,
"total_cost_usd": 0.42,
"cost_per_entry_usd": 0.0034,
"reasoning_ratio": 0.0
}
}

environment

재현성을 위한 런타임 환경 메타데이터예요.

FieldTypeDescription
harness_versionstringharness 버전(최상위 harness_version와 동일)
harness_git_commitstring실행 시점의 harness Git 커밋 SHA
python_versionstringPython 인터프리터 버전
sacrebleu_versionstringsacrebleu 라이브러리 버전(chrF++ 채점에 사용)
osstring운영체제 식별자
{
"environment": {
"harness_version": "2.0",
"harness_git_commit": "a1b2c3d",
"python_version": "3.11.9",
"sacrebleu_version": "2.4.0",
"os": "macOS-14.5-arm64"
}
}

results[]

항목별 결과 배열이에요. 데이터셋 항목당 하나의 객체가 인덱스 순서로 들어 있어요.

FieldTypeDescription
entry_idinteger코퍼스에서 이 항목의 ID(entries[].id와 일치)
sourcestring번역된 원본 텍스트
referencestring코퍼스의 gold-standard 참조
predictedstringmethod의 실제 출력
exact_matchboolean정규화 후 predictedreference와 정확히 일치하는지 여부
entry_chrfnumber이 항목의 문장 수준 chrF++ 점수 (0–100)
fst_acceptedboolean | nullFST 분석기가 출력을 수용했는지 여부. 분석기가 구성되지 않은 경우 null
fst_analysisstring[]출력에 대한 FST 분석 문자열(분석되지 않았거나 거부된 경우 빈 배열)
difficultyinteger코퍼스의 난이도 등급 (1–5)
provenancestring코퍼스의 출처 태그
latency_secondsnumber이 개별 항목의 응답 시간
usageobject항목별 토큰 사용량: { prompt_tokens, completion_tokens, reasoning_tokens }
errorstring | null이 항목이 실패한 경우의 오류 메시지. 성공 시 null
{
"results": [
{
"entry_id": 1,
"source": "Hello",
"reference": "tânisi",
"predicted": "tânisi",
"exact_match": true,
"entry_chrf": 100.0,
"fst_accepted": true,
"fst_analysis": ["tânisi+V+AI+Ind+2Sg"],
"difficulty": 1,
"provenance": "gold_standard",
"latency_seconds": 0.82,
"usage": {
"prompt_tokens": 385,
"completion_tokens": 12,
"reasoning_tokens": 0
},
"error": null
}
]
}

run_card_hash

FieldTypeDescription
run_card_hashstring전체 run card JSON의 SHA-256 해시. 해싱 중에는 run_card_hash 필드 자체를 ""로 설정해요

이것은 변조 탐지 봉인이에요. 리더보드는 제출 시 이 해시를 다시 계산하며, 일치하지 않는 card는 거부해요.

해시 계산 방법:

  1. run_card_hash""로 설정한 상태로 run card를 JSON으로 직렬화해요
  2. 직렬화된 문자열의 SHA-256을 계산해요
  3. run_card_hash을 결과로 나온 16진수 다이제스트로 설정해요
import hashlib, json

card["run_card_hash"] = ""
card_json = json.dumps(card, sort_keys=True, ensure_ascii=False)
card["run_card_hash"] = hashlib.sha256(card_json.encode()).hexdigest()

:::info 항목별 드릴다운 게시된 run card는 run_card_entries Supabase 테이블도 채워요. 이 테이블은 리더보드에서 드릴다운 분석을 위한 항목별 결과를 저장해요. 이 테이블은 mt-eval publish 중에 자동으로 채워져요. :::


함께 보기