enhance_viewer/json_test.json
2026-03-26 07:18:33 +00:00

904 lines
20 KiB
JSON

[
{
"param_type": "data",
"label": "Block size",
"name": "block_size",
"value": 1024,
"placeholder": "",
"description": "최대 시퀀스 길이 또는 텍스트 한 블록의 길이. -1로 설정하면 블록 크기가 자동으로 결정됨. 기본값은 -1.",
"inputType": "number",
"required": true,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full",
"basic"
]
},
{
"param_type": "data",
"label": "Model max length",
"name": "model_max_length",
"value": 2048,
"placeholder": "",
"description": "모델이 단일 배치에서 처리할 최대 길이를 설정하면 성능과 메모리 사용량에 영향을 줄 수 있음. 기본값은 1024.",
"inputType": "number",
"required": true,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full",
"basic"
]
},
{
"param_type": "data",
"label": "Padding side",
"name": "padding",
"placeholder": "",
"description": "시퀀스를 패딩할 측면(왼쪽 또는 오른쪽)",
"inputType": "select",
"value": "right",
"options": [
{
"label": "right",
"value": "right"
},
{
"label": "left",
"value": "left"
},
{
"label": "None",
"value": "None"
}
],
"required": false,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
},
{
"param_type": "data",
"label": "Add eos token",
"name": "add_eos_token",
"placeholder": "",
"description": "시퀀스 끝에 EOS 토큰을 추가할 지 여부",
"inputType": "bool",
"value": "true",
"required": false,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
},
{
"param_type": "trainer",
"label": "Logging method",
"name": "log",
"placeholder": "",
"description": "실험 추적을 위한 로깅 방법",
"inputType": "select",
"value": "tensorboard",
"options": [
{
"label": "tensorboard",
"value": "tensorboard"
},
{
"label": "wandb",
"value": "wandb",
"disabled": true
}
],
"required": true,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full",
"basic"
]
},
{
"param_type": "trainer",
"label": "Logging steps",
"name": "logging_steps",
"value": 1,
"placeholder": "",
"description": "이벤트 로깅 사이의 단계 수",
"inputType": "number",
"required": true,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full",
"basic"
]
},
{
"param_type": "trainer",
"label": "Use flash attention 2",
"name": "use_flash_attention",
"placeholder": "",
"description": "flash attention version 2 사용 여부",
"inputType": "bool",
"value": false,
"required": false,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
},
{
"param_type": "trainer",
"label": "Evaluation strategy",
"name": "eval_strategy",
"placeholder": "",
"description": "evaluation 전략 (예: \"epoch\")",
"inputType": "select",
"value": "steps",
"options": [
{
"label": "epoch",
"value": "epoch"
},
{
"label": "steps",
"value": "steps"
}
],
"required": false,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
},
{
"param_type": "trainer",
"label": "Save total limit",
"name": "save_total_limit",
"placeholder": "",
"description": "유지해야 하는 최대 체크포인트 수",
"inputType": "number",
"value": 1,
"required": false,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
},
{
"param_type": "trainer",
"label": "Auto find batch size",
"name": "auto_find_batch_size",
"placeholder": "",
"description": "최적의 배치 크기를 자동으로 찾을지 여부. 기본값은 False.",
"inputType": "bool",
"value": true,
"required": false,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
},
{
"param_type": "trainer",
"label": "Mixed precision",
"name": "mixed_precision",
"placeholder": "",
"description": "사용할 mixed precision 타입(예: “fp16”, “bf16” 또는 None)",
"inputType": "select",
"value": "fp16",
"options": [
{
"label": "fp16",
"value": "fp16"
},
{
"label": "bp16",
"value": "bp16"
},
{
"label": "None",
"value": "None"
}
],
"required": true,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full",
"basic"
]
},
{
"param_type": "trainer",
"label": "Learning rate",
"name": "learning_rate",
"value": 0.00003,
"placeholder": "",
"description": "트레이닝 학습률(Learning rate)",
"inputType": "number",
"required": true,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full",
"basic"
]
},
{
"param_type": "trainer",
"label": "Epochs",
"name": "epochs",
"value": 1,
"placeholder": "",
"description": "트레이닝 epochs 수",
"inputType": "number",
"required": true,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full",
"basic"
]
},
{
"param_type": "trainer",
"label": "Batch size",
"name": "batch_size",
"value": 2,
"placeholder": "",
"description": "트레이닝 배치 사이즈",
"inputType": "number",
"required": true,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full",
"basic"
]
},
{
"param_type": "trainer",
"label": "Warmup proportion",
"name": "warmup_ratio",
"value": 0.1,
"placeholder": "",
"description": "학습률(Learning rate) 워밍업 수행을 위한 트레이닝 비율",
"inputType": "number",
"required": false,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
},
{
"param_type": "trainer",
"label": "Gradient accumulation",
"name": "gradient_accumulation",
"value": 4,
"placeholder": "",
"description": "업데이트 전 gradients를 누적하는 단계 수",
"inputType": "number",
"required": true,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full",
"basic"
]
},
{
"param_type": "trainer",
"label": "Optimizer",
"name": "optimizer",
"placeholder": "",
"description": "트레이닝에 사용할 Optimizer",
"inputType": "select",
"value": "adamw_torch",
"options": [
{
"label": "adamw_torch",
"value": "adamw_torch"
},
{
"label": "adamw",
"value": "adamw"
},
{
"label": "adam",
"value": "adam"
},
{
"label": "sgd",
"value": "sgd"
}
],
"required": true,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full",
"basic"
]
},
{
"param_type": "trainer",
"label": "Scheduler",
"name": "scheduler",
"placeholder": "",
"description": "학습률(Learning rate) 스케쥴러",
"inputType": "select",
"value": "linear",
"options": [
{
"label": "linear",
"value": "linear"
},
{
"label": "cosine",
"value": "cosine"
},
{
"label": "cosine_warmup",
"value": "cosine_warmup"
},
{
"label": "constant",
"value": "constant"
}
],
"required": true,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full",
"basic"
]
},
{
"param_type": "trainer",
"label": "Weight decay",
"name": "weight_decay",
"value": 0,
"placeholder": "",
"description": "optimizer에 적용할 가중치 감쇠",
"inputType": "number",
"required": false,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
},
{
"param_type": "trainer",
"label": "Max grad norm",
"name": "max_grad_norm",
"value": 1,
"placeholder": "",
"description": "gradient clipping의 최대 표준",
"inputType": "number",
"required": false,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
},
{
"param_type": "trainer",
"label": "Seed",
"name": "seed",
"value": 42,
"placeholder": "",
"description": "재현성을 위한 Random seed",
"inputType": "number",
"required": false,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
},
{
"param_type": "trainer",
"label": "Chat template",
"name": "chat_template",
"placeholder": "",
"description": "채팅 기반 모델 템플릿 옵션: None, zephyr, chatml, or tokenizer",
"inputType": "select",
"value": "None",
"options": [
{
"label": "None",
"value": "None"
},
{
"label": "zephyr",
"value": "zephyr"
},
{
"label": "chatml",
"value": "chatml"
},
{
"label": "tokenizer",
"value": "tokenizer"
}
],
"required": true,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full",
"basic"
]
},
{
"param_type": "trainer",
"label": "model_ref",
"name": "model_ref",
"placeholder": "",
"description": "DPO 트레이너용 참조 모델",
"inputType": "text",
"value": "",
"required": false,
"disabled": false,
"hidden": true,
"trainer": [
"dpo"
],
"mode": [
"full"
]
},
{
"param_type": "trainer",
"label": "dpo_beta",
"name": "dpo_beta",
"placeholder": "",
"description": "DPO 트레이너용 Beta parameter",
"inputType": "number",
"value": 0.1,
"required": false,
"disabled": false,
"hidden": true,
"trainer": [
"dpo"
],
"mode": [
"full"
]
},
{
"param_type": "trainer",
"label": "max prompt length",
"name": "max_prompt_length",
"placeholder": "",
"description": "프롬프트 최대 길이",
"inputType": "number",
"value": 0.1,
"required": false,
"disabled": false,
"hidden": true,
"trainer": [
"dpo",
"orpo"
],
"mode": [
"full"
]
},
{
"param_type": "trainer",
"label": "Max completion length",
"name": "max_completion_length",
"placeholder": "",
"description": "completion 최대 길이",
"inputType": "number",
"value": 0.1,
"required": false,
"disabled": false,
"hidden": true,
"trainer": [
"dpo",
"orpo"
],
"mode": [
"full"
]
},
{
"param_type": "peft",
"label": "Quantization",
"name": "quantization",
"placeholder": "",
"description": "사용할 양자화 방법 (예: \"int4\", \"int8\", or None)",
"inputType": "select",
"value": "int4",
"options": [
{
"label": "int4",
"value": "int4"
},
{
"label": "int8",
"value": "int8"
},
{
"label": "None",
"value": "None"
}
],
"required": false,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
},
{
"param_type": "peft",
"label": "PEFT/LoRA",
"name": "peft",
"placeholder": "",
"description": "파라미터 효율적 미세 조정(PEFT) 사용 여부. 비활성화 시 Full-FT방식으로 훈련합니다.",
"inputType": "bool",
"value": true,
"required": true,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full",
"basic"
]
},
{
"param_type": "peft",
"label": "Target modules",
"name": "target_modules",
"value": "all-linear",
"placeholder": "",
"description": "양자화 또는 파인 튜닝을 위한 타겟 모듈",
"inputType": "text",
"required": true,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full",
"basic"
]
},
{
"param_type": "peft",
"label": "Merge adapter",
"name": "merge_adapter",
"placeholder": "",
"description": "어댑터 레이어 병합 여부",
"inputType": "bool",
"value": "false",
"required": false,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
},
{
"param_type": "peft",
"label": "Lora r",
"name": "lora_r",
"value": 16,
"placeholder": "",
"description": "LoRA matrices 순위",
"inputType": "number",
"required": false,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
},
{
"param_type": "peft",
"label": "Lora alpha",
"name": "lora_alpha",
"value": 32,
"placeholder": "",
"description": "LoRA용 Alpha parameter",
"inputType": "number",
"required": false,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
},
{
"param_type": "peft",
"label": "Lora dropout",
"name": "lora_dropout",
"value": 0.05,
"placeholder": "",
"description": "LoRA의 Dropout rate",
"inputType": "number",
"required": false,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
},
{
"param_type": "column_mappings",
"label": "Prompt text column",
"name": "prompt_text_column",
"placeholder": "프롬프트 텍스트의 컬럼 이름",
"description": "프롬프트 텍스트의 컬럼 이름. 특정할 값이 없으면 'text'를 입력하세요.",
"inputType": "text",
"value": "text",
"required": true,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full",
"basic"
]
},
{
"param_type": "dataset",
"label": "Dataset files",
"name": "dataset_files",
"placeholder": "data/*.json",
"description": "데이터셋으로 활용할 경로 또는 파일을 글로브패턴(와일드카드패턴)으로 입력하세요 예) *.parquet, data/train/*.jsonl",
"inputType": "text",
"value": "*.parquet",
"required": true,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full",
"basic"
]
},
{
"param_type": "dataset",
"label": "Pre-processing",
"name": "pre_processing",
"placeholder": "데이터셋은 dataset_dict, 토크나이저는 tokenizer 변수를 사용하여 접근하세요.",
"description": "데이터 전처리를 위한 Python 코드",
"inputType": "textarea",
"value": "def _normalize_role(raw_role):\n role = str(raw_role).strip().lower()\n\n if role in (\"human\", \"user\"):\n return \"user\"\n if role in (\"gpt\", \"assistant\", \"model\"):\n return \"assistant\"\n if role == \"system\":\n return \"system\"\n\n # 알 수 없는 role은 학습 중단 대신 assistant로 보내지 말고 명확히 실패\n raise ValueError(f\"Unsupported role: {raw_role}\")\n\n\ndef _extract_turn(turn):\n # 보통 parquet -> datasets 에서는 dict 형태로 들어옴\n if isinstance(turn, dict):\n if \"from\" in turn and \"value\" in turn:\n return {\n \"role\": _normalize_role(turn[\"from\"]),\n \"content\": \"\" if turn[\"value\"] is None else str(turn[\"value\"]),\n }\n if \"role\" in turn and \"content\" in turn:\n return {\n \"role\": _normalize_role(turn[\"role\"]),\n \"content\": \"\" if turn[\"content\"] is None else str(turn[\"content\"]),\n }\n\n # 예외적으로 [role, content] 형태일 때도 처리\n if isinstance(turn, (list, tuple)) and len(turn) == 2:\n return {\n \"role\": _normalize_role(turn[0]),\n \"content\": \"\" if turn[1] is None else str(turn[1]),\n }\n\n raise ValueError(f\"Unsupported conversation turn format: {turn}\")\n\n\ndef formatting_func(example):\n if \"conversations\" not in example:\n raise ValueError(f\"Missing 'conversations'. Available columns: {list(example.keys())}\")\n\n messages = [_extract_turn(turn) for turn in example[\"conversations\"]]\n\n # 빈 메시지는 제거\n messages = [m for m in messages if m[\"content\"].strip()]\n\n if not messages:\n raise ValueError(\"No valid messages found in example\")\n\n formatted_text = tokenizer.apply_chat_template(\n messages,\n tokenize=False,\n add_generation_prompt=False,\n )\n\n return {\"text\": formatted_text}\n\n\nfor split in list(dataset_dict.keys()):\n dataset_dict[split] = dataset_dict[split].map(\n formatting_func,\n batched=False,\n remove_columns=dataset_dict[split].column_names,\n )",
"required": false,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full",
"basic"
]
},
{
"param_type": "distributed",
"label": "distributed backend",
"name": "distributed_backend",
"placeholder": "",
"description": "분산 트레이닝에 사용할 백엔드",
"inputType": "text",
"value": "None",
"required": true,
"disabled": false,
"hidden": true,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
},
{
"param_type": "distributed",
"label": "Use fsdp2",
"name": "use_fsdp2",
"placeholder": "",
"description": "분산 트레이닝에 FSDP2 사용",
"inputType": "bool",
"value": "false",
"required": true,
"disabled": false,
"hidden": true,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
},
{
"param_type": "etc",
"label": "Disable GC",
"name": "disable_gc",
"placeholder": "",
"description": "GC 비활성화",
"inputType": "bool",
"value": false,
"required": false,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
},
{
"param_type": "etc",
"label": "Unsloth",
"name": "unsloth",
"placeholder": "",
"description": "Unsloth",
"inputType": "select",
"value": "false",
"options": [
{
"label": "true",
"value": "true"
},
{
"label": "false",
"value": "false"
}
],
"required": true,
"disabled": false,
"hidden": false,
"trainer": [
"default",
"sft"
],
"mode": [
"full"
]
}
]