KorByte-128K / src /korbyte /config.py
DongHyeok-Seo
Release KorByte-128K v2 tokenizer
5a98e33
Raw
History Blame Contribute Delete
4.94 kB
"""Shared, pinned configuration for reproducible KorByte builds."""
from __future__ import annotations
from dataclasses import asdict, dataclass
from pathlib import Path
from typing import Any
CORE_VOCAB_SIZE = 128_000
SPECIAL_TOKEN_COUNT = 256
TOTAL_VOCAB_SIZE = CORE_VOCAB_SIZE + SPECIAL_TOKEN_COUNT
DEFAULT_SEED = 20260804
DEFAULT_MODEL_MAX_LENGTH = 32_768
DEFAULT_REPOSITORY_ID = "dawncr0w/KorByte-128K"
KANANA_MODEL_ID = "kakaocorp/kanana-2-3b-base"
KANANA_REVISION = "9fa2a678c379700868d72685a22ea8ed0263ef33"
KLUE_REVISION = "349481ec73fff722f88e0453ca05c77a447d967c"
PUBLIC_BENCHMARK_ID = "eduagarcia/multilingual_tokenizer_benchmark"
PUBLIC_BENCHMARK_REVISION = "74fa5907af0265f42c09e21379bf21847e066990"
KMMLU_ID = "HAERAE-HUB/KMMLU"
KMMLU_REVISION = "d61b3f19e552c576bf5960dd24289763edc36a88"
@dataclass(frozen=True)
class BaselineSpec:
"""A public tokenizer artifact pinned for comparative evaluation."""
key: str
model_id: str
revision: str
COMPARISON_BASELINES = (
BaselineSpec("ax-4.0", "skt/A.X-4.0", "a3393fd67bf09a34a85e66dfd2c2da61c4497b67"),
BaselineSpec(
"trillion-7b",
"trillionlabs/Trillion-7B-preview",
"bc1650c5a954c7de0509d28c8dbc5bea560856e1",
),
BaselineSpec(
"midm-2.0",
"K-intelligence/Midm-2.0-Base-Instruct",
"35479c5fc9a18a5db7cc6dbadcf1db68db7beab0",
),
BaselineSpec(
"k-exaone",
"LGAI-EXAONE/K-EXAONE-236B-A23B",
"61e6d578eb102b578e5704e2916ac841df9eca0a",
),
BaselineSpec(
"solar-pro3",
"upstage/solar-pro3-tokenizer",
"c41b71f0519c580610cb0fd2af4ed2b23cad544f",
),
BaselineSpec(
"thunder",
"thunder-research-group/Llama-Thunder-LLM-8B",
"ecfd6c909944939ae42982f3d87cf36898da308b",
),
BaselineSpec(
"kanana-2",
KANANA_MODEL_ID,
KANANA_REVISION,
),
BaselineSpec(
"hyperclovax",
"naver-hyperclovax/HyperCLOVAX-SEED-Think-32B",
"a6cdfd3464d1b767259cad23e164eaf39d3e3960",
),
)
@dataclass(frozen=True)
class SourceSpec:
"""A deterministic slice of a public corpus."""
key: str
dataset_id: str
config_name: str
split: str
revision: str
license_id: str
source_url: str
text_field: str = "text"
character_budget: int = 0
min_target_script_ratio: float = 0.0
target_script: str = "any"
shuffle_buffer: int = 10_000
def as_dict(self) -> dict[str, Any]:
return asdict(self)
DEFAULT_SOURCES = (
SourceSpec(
key="fineweb2_korean",
dataset_id="HuggingFaceFW/fineweb-2",
config_name="kor_Hang",
split="train",
revision="af9c13333eb981300149d5ca60a8e9d659b276b9",
license_id="ODC-By-1.0",
source_url="https://huggingface.co/datasets/HuggingFaceFW/fineweb-2",
character_budget=500_000_000,
min_target_script_ratio=0.25,
target_script="hangul",
),
SourceSpec(
key="wikipedia_korean",
dataset_id="wikimedia/wikipedia",
config_name="20231101.ko",
split="train",
revision="b04c8d1ceb2f5cd4588862100d08de323dccfbaa",
license_id="CC-BY-SA-3.0-and-GFDL",
source_url="https://huggingface.co/datasets/wikimedia/wikipedia",
character_budget=150_000_000,
min_target_script_ratio=0.20,
target_script="hangul",
),
SourceSpec(
key="wikipedia_english",
dataset_id="wikimedia/wikipedia",
config_name="20231101.en",
split="train",
revision="b04c8d1ceb2f5cd4588862100d08de323dccfbaa",
license_id="CC-BY-SA-3.0-and-GFDL",
source_url="https://huggingface.co/datasets/wikimedia/wikipedia",
character_budget=50_000_000,
min_target_script_ratio=0.60,
target_script="latin",
),
)
@dataclass(frozen=True)
class Paths:
"""Project paths derived from one repository root."""
root: Path
@property
def corpus(self) -> Path:
return self.root / "data" / "train.txt"
@property
def corpus_manifest(self) -> Path:
return self.root / "provenance" / "corpus_manifest.json"
@property
def build_manifest(self) -> Path:
return self.root / "provenance" / "build_manifest.json"
@property
def benchmark_json(self) -> Path:
return self.root / "reports" / "benchmark.json"
@property
def benchmark_markdown(self) -> Path:
return self.root / "reports" / "benchmark.md"
@property
def comparison_json(self) -> Path:
return self.root / "reports" / "comparison.json"
@property
def comparison_markdown(self) -> Path:
return self.root / "reports" / "comparison.md"
@property
def validation_json(self) -> Path:
return self.root / "reports" / "validation.json"
def project_root() -> Path:
return Path(__file__).resolve().parents[2]