Post

[D-36] Fine-tuning (Line Completion)

๐Ÿ“‹ ์ž‘์—… ์š”์•ฝ (2026-01-20) ๐ŸŽฏ ๋ชฉํ‘œ BiGS์™€ Mamba ๋ชจ๋ธ์„ CodeXGLUE line completion ํƒœ์Šคํฌ๋กœ fine-tuning ๐Ÿ”ด ๋ฐœ๊ฒฌ๋œ ๋ฌธ์ œ๋“ค

Dataset ๋ฌธ์ œ (Root Cause)

code_x_glue_cc_code_completion_line ๋ฐ์ดํ„ฐ์…‹์˜ gt ํ•„๋“œ๊ฐ€ ์™„์ „ํžˆ ๋น„์–ด์žˆ์Œ ๊ฒฐ๊ณผ: loss=0.0, eval_loss=NaN

Context Truncation ๋ฌธ์ œ

๊ธด ์ฝ”๋“œ๊ฐ€ max_length=512๋กœ ์ž˜๋ฆฌ๋ฉด์„œ target(gt)์ด ์‚ฌ๋ผ์ง 39%์˜ ์ƒ˜ํ”Œ์—์„œ valid labels๊ฐ€ 0๊ฐœ

API ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ

HuggingFace Trainer์˜ log() ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜ ๋ณ€๊ฒฝ start_time ํŒŒ๋ผ๋ฏธํ„ฐ ํ•„์ˆ˜ํ™”

โœ… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ๋ฐ์ดํ„ฐ์…‹ ์ „ํ™˜:

code_x_glue_cc_code_completion_line (๋ฌธ์ œ ์žˆ์Œ) โ†’ code_x_glue_cc_code_completion_token (์ •์ƒ) 100K train, 50K test samples

ํ† ํฐ์œผ๋กœ ๋ผ์ธ ๊ตฌ๋ถ„ ์ „์ฒ˜๋ฆฌ ๋กœ์ง ๊ฐœ์„ : python# โ˜… ํ•ต์‹ฌ: target ๊ธธ์ด๋ฅผ ๋จผ์ € ๊ณ„์‚ฐ ํ›„ context ์ œํ•œ target_length = len(tokenizer(target_text)['input_ids']) max_context_length = max(50, max_length - target_length - 10) context_encoded = tokenizer(context_text, max_length=max_context_length) # โ˜… Validation: valid labels ์—†์œผ๋ฉด skip if sum(1 for l in labels if l != -100) == 0: return {'input_ids': [], 'labels': []} ๐Ÿ“ ์ƒ์„ฑ๋œ ํŒŒ์ผ๋“ค BiGS: /mnt/user-data/outputs/finetune_line_bigs_fixed.py โœ… /mnt/user-data/outputs/bigs-line-fixed-sbatch.sh โœ… ์ถœ๋ ฅ ๊ฒฝ๋กœ: /storage/athene/work/kim/causal/output_line_completion_fixed ๋กœ๊ทธ: line_bigs_fixed_output.txt, line_bigs_fixed_error.txt Mamba: /mnt/user-data/outputs/finetune_line_mamba_fixed.py โœ… /mnt/user-data/outputs/mamba-line-fixed-sbatch.sh โœ… ์ถœ๋ ฅ ๊ฒฝ๋กœ: /storage/athene/work/kim/mamba/output_line_completion_fixed ๋กœ๊ทธ: line_mamba_fixed_output.txt, line_mamba_fixed_error.txt ๐Ÿ”ง ์ตœ์ข… ์ˆ˜์ •์‚ฌํ•ญ (์˜ค๋Š˜ ์™„๋ฃŒ) Triton Cache & WandB ์„ค์ • ์ถ”๊ฐ€ (์Šคํฌ๋ฆฝํŠธ ๋งจ ์œ„) python triton_cache = os.path.join(os.getcwd(), "triton_cache") os.environ["XDG_CACHE_HOME"] = triton_cache os.environ["TRITON_CACHE_DIR"] = triton_cache log() ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜ ์ˆ˜์ • python def log(self, logs, start_time=None, **kwargs): super().log(logs, start_time=start_time, **kwargs) ๐Ÿš€ ๋‚ด์ผ ํ•  ์ž‘์—… ํŒŒ์ผ ๋ณต์‚ฌ ๋ฐ ์‹คํ–‰ bash # BiGS cd /storage/athene/work/kim/causal cp /mnt/user-data/outputs/finetune_line_bigs_fixed.py ./ sbatch bigs-line-fixed-sbatch.sh # Mamba cd /storage/athene/work/kim/mamba cp /mnt/user-data/outputs/finetune_line_mamba_fixed.py ./ sbatch mamba-line-fixed-sbatch.sh ํ•™์Šต ๋ชจ๋‹ˆํ„ฐ๋ง ๋กœ๊ทธ ํ™•์ธ: tail -f line_*_fixed_error.txt ํ™•์ธ์‚ฌํ•ญ: โœ… Loss๊ฐ€ ์‹ค์ œ ๊ฐ’์œผ๋กœ ๋‚˜์˜ค๋Š”์ง€ โœ… Eval loss๊ฐ€ NaN์ด ์•„๋‹Œ์ง€ โœ… Perplexity ๊ณ„์‚ฐ๋˜๋Š”์ง€ โœ… Accuracy ๋ฉ”ํŠธ๋ฆญ ๋‚˜์˜ค๋Š”์ง€ ํ•™์Šต ์™„๋ฃŒ ํ›„ ๋ชจ๋ธ ์ €์žฅ ํ™•์ธ: output_line_completion_fixed/ ๋””๋ ‰ํ† ๋ฆฌ ์ตœ์ข… ์„ฑ๋Šฅ ๋น„๊ต: BiGS vs Mamba ๐Ÿ“Œ ์ฐธ๊ณ ์‚ฌํ•ญ Pretrained ๋ชจ๋ธ ๊ฒฝ๋กœ: BiGS: /storage/athene/work/kim/causal/output4/fim_code Mamba: /storage/athene/work/kim/mamba/output_mamba/fim_code ๋ฐ์ดํ„ฐ์…‹ ํฌ๊ธฐ: 9000 train, 1000 eval ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ: BiGS LR: 5e-5 Mamba LR: 1e-4 Batch size: 8 (gradient accumulation: 4) Epochs: 3 Max length: 512 ์ด์ „ ์‹คํŒจํ•œ ์‹คํ–‰๋“ค: output_line_completion (not _fixed) ๋””๋ ‰ํ† ๋ฆฌ๋Š” ๋ฌด์‹œํ•˜์…”๋„ ๋ฉ๋‹ˆ๋‹ค.
This post is licensed under CC BY 4.0 by the author.