sangwon1472's picture
Add gemma-mud-colab-starter package
d9fceea

๋ฌธ์ œ ํ•ด๊ฒฐ

1. Hugging Face ์ธ์ฆ ์‹คํŒจ

์ฆ์ƒ

  • ๋กœ๊ทธ์ธ ์…€์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค.
  • ํ† ํฐ ์ž…๋ ฅ ํ›„์—๋„ ์ธ์ฆ ์‹คํŒจ ๋ฉ”์‹œ์ง€๊ฐ€ ๋œฌ๋‹ค.

์›์ธ

  • ํ† ํฐ์ด ํ‹€๋ ธ๊ฑฐ๋‚˜ ๋งŒ๋ฃŒ๋˜์—ˆ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ํ† ํฐ ๊ถŒํ•œ์ด ๋ถ€์กฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ถ™์—ฌ ๋„ฃ๋Š” ๊ณผ์ •์—์„œ ๊ณต๋ฐฑ์ด ์„ž์˜€์„ ์ˆ˜ ์žˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • Hugging Face์—์„œ ์ƒˆ ํ† ํฐ์„ ๋‹ค์‹œ ๋ฐœ๊ธ‰ํ•œ๋‹ค.
  • ๋ณต์‚ฌํ•  ๋•Œ ์•ž๋’ค ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•œ๋‹ค.
  • ๋…ธํŠธ๋ถ์„ ์žฌ์‹œ์ž‘ํ•œ ๋’ค ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•œ๋‹ค.

2. Gemma ๋ชจ๋ธ ์ ‘๊ทผ ๊ถŒํ•œ ์˜ค๋ฅ˜

์ฆ์ƒ

  • from_pretrained ๋‹จ๊ณ„์—์„œ ์ ‘๊ทผ ๊ฑฐ๋ถ€๊ฐ€ ๋œฌ๋‹ค.
  • gated model ๊ด€๋ จ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค.

์›์ธ

  • Gemma ๋ชจ๋ธ ์‚ฌ์šฉ ์กฐ๊ฑด์„ ์•„์ง ์Šน์ธํ•˜์ง€ ์•Š์•˜๋‹ค.
  • ์Šน์ธ ํ›„์—๋„ ๋กœ๊ทธ์ธ ์ƒํƒœ๊ฐ€ ๋ฐ˜์˜๋˜์ง€ ์•Š์•˜์„ ์ˆ˜ ์žˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • Hugging Face์—์„œ ์›ํ•˜๋Š” Gemma ๋ชจ๋ธ ์นด๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.
  • ์‚ฌ์šฉ ์กฐ๊ฑด์„ ์Šน์ธํ•œ๋‹ค.
  • ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•œ๋‹ค.
  • ๊ณ„์† ๋ง‰ํžˆ๋ฉด ๊ธฐ๋ณธ๊ฐ’์ธ unsloth/gemma-4-E2B-it ๊ฒฝ๋กœ๋กœ ๋จผ์ € ์‹œํ—˜ํ•œ๋‹ค.

3. Colab GPU๊ฐ€ ์•ˆ ์žกํžˆ๋Š” ๊ฒฝ์šฐ

์ฆ์ƒ

  • torch.cuda.is_available() ๊ฐ€ False๋กœ ๋‚˜์˜จ๋‹ค.
  • import unsloth ์—์„œ Unsloth cannot find any torch accelerator ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค.

์›์ธ

  • ๋Ÿฐํƒ€์ž„์ด CPU๋กœ ์—ด๋ ธ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฌด๋ฃŒ Colab ์ž์›์ด ์ž ์‹œ ๋ถ€์กฑํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • ๋Ÿฐํƒ€์ž„ โ†’ ๋Ÿฐํƒ€์ž„ ์œ ํ˜• ๋ณ€๊ฒฝ โ†’ GPU ๋กœ ๋‹ค์‹œ ์„ค์ •ํ•œ๋‹ค.
  • ์ƒˆ ์„ธ์…˜์„ ๋‹ค์‹œ ์—ด์–ด ๋ณธ๋‹ค.
  • GPU๋กœ ๋ฐ”๊พผ ๋’ค์—๋Š” ์„ค์น˜ ์…€๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹คํ–‰ํ•œ๋‹ค.
  • ๊ณ„์† ์•ˆ ๋˜๋ฉด ์ž ์‹œ ํ›„ ๋‹ค์‹œ ์‹œ๋„ํ•œ๋‹ค.

4. bitsandbytes / quantization ๊ด€๋ จ ์˜ค๋ฅ˜

์ฆ์ƒ

  • 4bit ์–‘์žํ™” ์„ค์ • ์…€์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค.
  • bitsandbytes import ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค.

์›์ธ

  • ํŒจํ‚ค์ง€ ์„ค์น˜๊ฐ€ ๋œ ๋๋‚ฌ์„ ์ˆ˜ ์žˆ๋‹ค.
  • GPU ์„ธ์…˜์ด ์•„๋‹Œ ์ƒํƒœ์ผ ์ˆ˜ ์žˆ๋‹ค.
  • ์„ค์น˜ ํ›„ ๋Ÿฐํƒ€์ž„ ์žฌ์‹œ์ž‘์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • ์„ค์น˜ ์…€์„ ๋‹ค์‹œ ์‹คํ–‰ํ•œ๋‹ค.
  • ๋Ÿฐํƒ€์ž„์„ ์žฌ์‹œ์ž‘ํ•œ๋‹ค.
  • GPU๊ฐ€ ์‹ค์ œ๋กœ ์žกํ˜”๋Š”์ง€ ๋‹ค์‹œ ํ™•์ธํ•œ๋‹ค.
  • LOAD_IN_4BIT = True / False ๋ฅผ ๋ฐ”๊ฟ” ์–ด๋А ์ชฝ์ด ํ˜„์žฌ ์„ธ์…˜์—์„œ ์•ˆ์ •์ ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.

4-1. import ๋‹จ๊ณ„์—์„œ ๋ฐ”๋กœ ๊นจ์ง€๋Š” ๊ฒฝ์šฐ

์ฆ์ƒ

  • from transformers import ... ๋‹จ๊ณ„์—์„œ ๋ฐ”๋กœ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค.
  • ModuleNotFoundError: No module named 'unsloth' ๊ฐ€ ๋œฌ๋‹ค.
  • from unsloth import FastModel ๋‹จ๊ณ„์—์„œ import error ๊ฐ€ ๋‚œ๋‹ค.
  • from trl import SFTTrainer ์—์„œ import error ๊ฐ€ ๋‚œ๋‹ค.
  • ์„ค์น˜ ์…€์€ ๋๋‚ฌ์ง€๋งŒ ๋‹ค์Œ ์…€์—์„œ ํŒจํ‚ค์ง€ ์ถฉ๋Œ ๋ฉ”์‹œ์ง€๊ฐ€ ์ด์–ด์ง„๋‹ค.

์›์ธ

  • Colab ๊ธฐ๋ณธ torch ์™€ Unsloth ์ชฝ ํŒจํ‚ค์ง€ ๋ฒ„์ „์ด ์ค‘๊ฐ„์— ์„ž์˜€์„ ์ˆ˜ ์žˆ๋‹ค.
  • transformers==5.5.0 ์ด์ „ ์กฐํ•ฉ์ด๋‚˜ ๋ˆ„๋ฝ๋œ timm / torchcodec ๋•Œ๋ฌธ์— Gemma 4 import ๊ฐ€ ๊นจ์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ์„ค์น˜ ์งํ›„ ์žฌ์‹œ์ž‘ ์—†์ด ์ด์ „ ๋Ÿฐํƒ€์ž„ ์ƒํƒœ๊ฐ€ ๋‚จ์•„ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • ๋…ธํŠธ๋ถ ์„ค์น˜ ์…€์„ ๊ทธ๋Œ€๋กœ ๋‹ค์‹œ ์‹คํ–‰ํ•œ๋‹ค.
  • ์„ค์น˜ ๋’ค ๋ฐ”๋กœ ๊นจ์กŒ๋‹ค๋ฉด ๋Ÿฐํƒ€์ž„์„ ์žฌ์‹œ์ž‘ํ•œ ๋‹ค์Œ 2๋ฒˆ ์…€๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹คํ–‰ํ•œ๋‹ค.
  • ์„ค์น˜ ์…€ ๋งˆ์ง€๋ง‰์˜ pip show unsloth ์ถœ๋ ฅ์ด ์‹ค์ œ๋กœ ๋ณด์ด๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • ๋ฒ„์ „ ์ถœ๋ ฅ์—์„œ unsloth, transformers, trl ์ด ์ •์ƒ์ ์œผ๋กœ ์ฐํžˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

5. ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ

์ฆ์ƒ

  • ํ•™์Šต ์ค‘๊ฐ„์— out of memory ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค.
  • ์„ธ์…˜์ด ๊ฐ‘์ž๊ธฐ ์ฃฝ๋Š”๋‹ค.

์›์ธ

  • ๋ชจ๋ธ์ด ๋„ˆ๋ฌด ํฌ๋‹ค.
  • MAX_SEQ_LENGTH ๊ฐ€ ๋„ˆ๋ฌด ๊ธธ๋‹ค.
  • ๋ฐฐ์น˜ ํฌ๊ธฐ ๋˜๋Š” ๋ˆ„์  ์Šคํ… ์กฐํ•ฉ์ด ํ˜„์žฌ GPU์— ๋ฌด๊ฒ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • LOAD_IN_4BIT = True ๋กœ ๋ฐ”๊พผ๋‹ค.
  • MAX_SEQ_LENGTH ๋ฅผ 1024 โ†’ 512 ๋กœ ์ค„์ธ๋‹ค.
  • batch size๋Š” 1๋กœ ์œ ์ง€ํ•˜๊ณ , ํ•„์š”ํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์ˆ˜๋ฅผ ์ค„์—ฌ ํ๋ฆ„๋งŒ ๋จผ์ € ํ™•์ธํ•œ๋‹ค.

6. dataset ํŒŒ์ผ ๊ฒฝ๋กœ ์˜ค๋ฅ˜

์ฆ์ƒ

  • FileNotFoundError ๊ฐ€ ๋œฌ๋‹ค.
  • ๋…ธํŠธ๋ถ์ด dataset ํŒŒ์ผ์„ ์ฐพ์ง€ ๋ชปํ•œ๋‹ค.

์›์ธ

  • ํŒŒ์ผ ์—…๋กœ๋“œ ์œ„์น˜๊ฐ€ ๋…ธํŠธ๋ถ ์„ค์ •๊ณผ ๋‹ค๋ฅด๋‹ค.
  • zip์€ ํ’€์—ˆ์ง€๋งŒ Colab ๊ฒฝ๋กœ๊ฐ€ ๋‹ฌ๋ผ์กŒ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • ํŒŒ์ผ ํŒจ๋„์—์„œ ์‹ค์ œ ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ•œ๋‹ค.
  • ์„ค์ • ์…€์˜ DATA_CANDIDATES ๋ชฉ๋ก์— ํ˜„์žฌ ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
  • ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ dataset ํŒŒ์ผ์„ /content/ ์— ์ง์ ‘ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค.

7. ์„ธ์…˜ ์ข…๋ฃŒ ๋˜๋Š” ๋Ÿฐํƒ€์ž„ ์ดˆ๊ธฐํ™”

์ฆ์ƒ

  • ์ฝ”๋žฉ์ด ๊ฐ‘์ž๊ธฐ ๋‹ค์‹œ ์‹œ์ž‘๋œ๋‹ค.
  • ํ•™์Šต ๋กœ๊ทธ๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค.

์›์ธ

  • ๋ฌด๋ฃŒ Colab ์„ธ์…˜ ์ œํ•œ
  • ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ
  • ์žฅ์‹œ๊ฐ„ ์œ ํœด ์ƒํƒœ

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • ๋จผ์ € ์ž‘์€ ๋ชจ๋ธ๊ณผ ์งง์€ ์„ค์ •์œผ๋กœ ํ•œ ๋ฒˆ ์„ฑ๊ณต์‹œํ‚จ๋‹ค.
  • ์ €์žฅ ์…€์ด ๋๋‚ฌ๋Š”์ง€ ์ˆ˜์‹œ๋กœ ํ™•์ธํ•œ๋‹ค.
  • ๊ฒฐ๊ณผ๋Š” ๊ฐ€๋Šฅํ•œ ๋นจ๋ฆฌ Drive๋‚˜ ๋กœ์ปฌ์— ๋ฐฑ์—…ํ•œ๋‹ค.

8. ์ถœ๋ ฅ ํ’ˆ์งˆ์ด ์ด์ƒํ•œ ๊ฒฝ์šฐ

์ฆ์ƒ

  • ๋งํˆฌ๊ฐ€ ํ”๋“ค๋ฆฐ๋‹ค.
  • ์„ธ๊ณ„๊ด€ ๋ฐ– ์„ค๋ช…์ด ๋‚˜์˜จ๋‹ค.
  • ๋„ˆ๋ฌด ๊ธธ๊ฑฐ๋‚˜ ๊ฑด์กฐํ•œ ๋‹ต์ด ๋‚˜์˜จ๋‹ค.

์›์ธ

  • ๋ฐ์ดํ„ฐ ์ˆ˜๊ฐ€ ์ ๋‹ค.
  • instruction์ด ์ถฉ๋ถ„ํžˆ ๊ตฌ์ฒด์ ์ด์ง€ ์•Š๋‹ค.
  • ๋ฌธ์ฒด๋Š” ์ตํ˜”์ง€๋งŒ ๊ทœ์น™๊นŒ์ง€ ์ž๋™์œผ๋กœ ๋ฐฐ์šฐ์ง€ ๋ชปํ–ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • ๋ฐ์ดํ„ฐ ์ˆ˜๋ฅผ 300๊ฐœ ์ด์ƒ์œผ๋กœ ๋Š˜๋ฆฐ๋‹ค.
  • NPC๋ณ„, ๋ช…๋ น์–ด๋ณ„ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜๋ˆˆ๋‹ค.
  • instruction ๋ฌธ์žฅ์„ ๋” ๋˜๋ ทํ•˜๊ฒŒ ์“ด๋‹ค.
  • ์‹ค์ œ ๊ฒŒ์ž„ ํŒ์ •์€ ์—”์ง„์ด ๋งก๊ณ , AI๋Š” ๋Œ€ํ™”/๋ถ„์œ„๊ธฐ/์„œ์‚ฌ ๋ณด์กฐ์— ์“ฐ๋Š” ํŽธ์ด ์•ˆ์ „ํ•˜๋‹ค.

9. ์ €์žฅ ํŒŒ์ผ์ด ์•ˆ ๋ณด์ด๋Š” ๊ฒฝ์šฐ

์ฆ์ƒ

  • ํ•™์Šต์€ ๋๋‚ฌ๋Š”๋ฐ ์ถœ๋ ฅ ํด๋”๊ฐ€ ๋น„์–ด ๋ณด์ธ๋‹ค.
  • ํŒŒ์ผ ํŒจ๋„์—์„œ ๊ฒฐ๊ณผ๊ฐ€ ์ž˜ ์•ˆ ๋ณด์ธ๋‹ค.

์›์ธ

  • ์ €์žฅ ๊ฒฝ๋กœ๋ฅผ ์ž˜๋ชป ๋ณด์•˜์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์„ธ์…˜ ์žฌ์‹œ์ž‘ ์ „ ์ €์žฅ์ด ๋๋‚˜์ง€ ์•Š์•˜์„ ์ˆ˜ ์žˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • /content/output/gemma_mud_lora_out ๊ฒฝ๋กœ๋ฅผ ์ง์ ‘ ํ™•์ธํ•œ๋‹ค.
  • os.listdir() ๋กœ ํด๋” ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•ด ๋ณธ๋‹ค.
  • Drive ๋ณต์‚ฌ ์…€์„ ์‚ฌ์šฉํ•ด ๋ณ„๋„ ์œ„์น˜์— ๋ฐฑ์—…ํ•œ๋‹ค.