Ver3.0 ๐ Colab์์ LLaMA 3 ๋ก๋ ๋ฐ ํ ์คํธํ๊ธฐ

๐ Colab์์ LLaMA 3 ๋ก๋ ๋ฐ ํ ์คํธํ๊ธฐ
๋ฌด๋ฃ GPU๋ก ์ต์ ์คํ์์ค LLM ๋ง์คํฐํ๊ธฐ
์๋
! ๐ ์ค๋์ ์ ๋ง ํซํ ์ฃผ์ ๋ฅผ ๊ฐ์ง๊ณ ์์ด. ๋ฐ๋ก Meta์์ ๊ณต๊ฐํ LLaMA 3๋ฅผ Google Colab์์ ๋๋ ค๋ณด๋ ๋ฐฉ๋ฒ์ด์ผ. "๋ ์ปดํจํฐ ์ฌ์์ด ๋ณ๋ก์ธ๋ฐ..."๋ผ๊ณ ๊ฑฑ์ ํ๋ ์น๊ตฌ๋ค, ๊ฑฑ์ ๋ง! Colab์ ๋ฌด๋ฃ GPU๋ฅผ ํ์ฉํ๋ฉด ๋๊ตฌ๋ ์ต์ AI ๋ชจ๋ธ์ ์ฒดํํ ์ ์๊ฑฐ๋ . ๐
์ด ๊ธ์ ๋ค ์ฝ๊ณ ๋๋ฉด ๋๋ LLaMA 3๋ฅผ ๋ด ์์์์ ์์ ์์ฌ๋ก ๋ค๋ฃฐ ์ ์์ ๊ฑฐ์ผ. ํ๋ก๊ทธ๋๋ฐ ์ด๋ณด์๋ ๋ฐ๋ผํ ์ ์๊ฒ ์ต๋ํ ์ฝ๊ฒ ์ค๋ช
ํ ํ
๋๊น ๋๊น์ง ์ง์คํด์ค!
๐ค LLaMA 3๊ฐ ๋ญ๊ธธ๋?
๋จผ์ LLaMA 3์ ๋ํด ๊ฐ๋จํ ์์๋ณผ๊น? LLaMA๋ "Large Language Model Meta AI"์ ์ฝ์์ผ. Meta(๊ตฌ Facebook)์์ ๊ฐ๋ฐํ ์คํ์์ค ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ์ด์ง. ๐ง
2024๋
์ ๊ณต๊ฐ๋ LLaMA 3๋ ์ด์ ๋ฒ์ ๋ค๋ณด๋ค ํจ์ฌ ๊ฐ๋ ฅํด์ก์ด. ChatGPT๋ Claude ๊ฐ์ ์์ฉ ๋ชจ๋ธ๋ค๊ณผ ๋น๊ตํด๋ ์์์๋ ์ฑ๋ฅ์ ์๋ํ๊ฑฐ๋ . ๊ฒ๋ค๊ฐ ์์ ์คํ์์ค๋ผ๋ ๊ฒ ๊ฐ์ฅ ํฐ ์ฅ์ ์ด์ผ!
๐ฏ LLaMA 3์ ์ฃผ์ ํน์ง
1. ๋ค์ํ ๋ชจ๋ธ ํฌ๊ธฐ
8B(80์ต), 70B(700์ต) ํ๋ผ๋ฏธํฐ ๋ฒ์ ์ ๊ณต. ์ฉ๋์ ํ๋์จ์ด์ ๋ง๊ฒ ์ ํ ๊ฐ๋ฅ!
2. ๋ฐ์ด๋ ์ฑ๋ฅ
์์ฐ์ด ์ดํด, ์ฝ๋ ์์ฑ, ์ถ๋ก ๋ฅ๋ ฅ์ด ์ด์ ๋ฒ์ ๋๋น ํฌ๊ฒ ํฅ์๋จ
3. ์คํ์์ค ๋ผ์ด์ ์ค
์ฐ๊ตฌ์ฉ์ ๋ฌผ๋ก ์์
์ ์ฉ๋๋ก๋ ํ์ฉ ๊ฐ๋ฅ (์ผ๋ถ ์ ํ ์์)
4. ๋ค๊ตญ์ด ์ง์
์์ด๋ฟ๋ง ์๋๋ผ ํ๊ตญ์ด๋ฅผ ํฌํจํ ์ฌ๋ฌ ์ธ์ด ์ง์
๐ก ์ฌ๋ฅ๋ท ํ: AI/๋จธ์ ๋ฌ๋ ๊ฐ๋ฐ ์ค๋ ฅ์ ํค์ฐ๊ณ ์ถ๋ค๋ฉด ์ฌ๋ฅ๋ท(https://www.jaenung.net)์์ ์ ๋ฌธ๊ฐ์ 1:1 ์ฝ์นญ์ ๋ฐ์๋ณด๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์ผ. ์ค๋ฌด ๊ฒฝํ์ด ํ๋ถํ ๊ฐ๋ฐ์๋ค์ด ํ๋ก์ ํธ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฅด์ณ์ฃผ๊ฑฐ๋ !
๐ง Google Colab ํ๊ฒฝ ์ค์ ํ๊ธฐ
์, ์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์ํด๋ณผ๊น? ๋จผ์ Google Colab ํ๊ฒฝ์ ์ค๋นํด์ผ ํด. Colab์ ๊ตฌ๊ธ์ด ์ ๊ณตํ๋ ๋ฌด๋ฃ ํด๋ผ์ฐ๋ Jupyter ๋ ธํธ๋ถ ํ๊ฒฝ์ด์ผ. ๋ณ๋ ์ค์น ์์ด ๋ธ๋ผ์ฐ์ ์์ ๋ฐ๋ก Python ์ฝ๋๋ฅผ ์คํํ ์ ์์ง! ๐
STEP 1: Colab ์ ์ ๋ฐ ๋ ธํธ๋ถ ์์ฑ
1. ์น๋ธ๋ผ์ฐ์ ์์ colab.research.google.com ์ ์
2. Google ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ
3. ์ข์ธก ์๋จ "ํ์ผ" โ "์ ๋
ธํธ" ํด๋ฆญ
4. ๋
ธํธ๋ถ ์ด๋ฆ์ "LLaMA3_Test"๋ก ๋ณ๊ฒฝ
STEP 2: GPU ๋ฐํ์ ์ค์ (๋งค์ฐ ์ค์! โก)
LLaMA 3 ๊ฐ์ ๋๊ท๋ชจ ๋ชจ๋ธ์ GPU๊ฐ ํ์์ผ. CPU๋ง์ผ๋ก๋ ๋ก๋ฉ์กฐ์ฐจ ํ๋ค๊ฑฐ๋ .
1. ์๋จ ๋ฉ๋ด์์ "๋ฐํ์" โ "๋ฐํ์ ์ ํ ๋ณ๊ฒฝ" ํด๋ฆญ
2. "ํ๋์จ์ด ๊ฐ์๊ธฐ"๋ฅผ GPU๋ก ๋ณ๊ฒฝ
3. GPU ์ ํ์ T4 ๋๋ ๊ทธ ์ด์ ๊ถ์ฅ (๋ฌด๋ฃ ๋ฒ์ ์์๋ ์๋ ํ ๋น๋จ)
4. "์ ์ฅ" ๋ฒํผ ํด๋ฆญ
โ ๏ธ ์ฃผ์์ฌํญ: Colab ๋ฌด๋ฃ ๋ฒ์ ์ ์ฌ์ฉ ์๊ฐ๊ณผ GPU ํ ๋น์ ์ ํ์ด ์์ด. ์ฐ์ ์ฌ์ฉ ์๊ฐ์ ์ฝ 12์๊ฐ, ์ ํด ์๊ฐ์ 90๋ถ ์ ๋์ผ. ์ค์ํ ์์ ์ค์๋ ์ฃผ๊ธฐ์ ์ผ๋ก ์ฝ๋๋ฅผ ์คํํด์ ์ธ์ ์ด ๋๊ธฐ์ง ์๋๋ก ํด์ผ ํด!
STEP 3: GPU ํ ๋น ํ์ธ
GPU๊ฐ ์ ๋๋ก ํ ๋น๋์๋์ง ํ์ธํด๋ณด์. ์ฒซ ๋ฒ์งธ ์ ์ ์๋ ์ฝ๋๋ฅผ ์ ๋ ฅํ๊ณ ์คํํด๋ด:
!nvidia-smi
์ด ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด ํ์ฌ ํ ๋น๋ GPU ์ ๋ณด๊ฐ ํ์๋ผ. Tesla T4, V100, A100 ๊ฐ์ ์ด๋ฆ์ด ๋ณด์ด๋ฉด ์ฑ๊ณต์ด์ผ! ๐
๋ง์ฝ GPU๊ฐ ํ ๋น๋์ง ์์๋ค๋ฉด ๋ฐํ์ ์ค์ ์ ๋ค์ ํ์ธํ๊ฑฐ๋, ์ ์ ํ ๋ค์ ์๋ํด๋ด.
๐ฆ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์นํ๊ธฐ
LLaMA 3๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ช ๊ฐ์ง Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํด. ๊ฐ์ฅ ์ค์ํ ๊ฑด Hugging Face Transformers์ผ. ์ด๊ฑด ๋ค์ํ ์ฌ์ ํ์ต ๋ชจ๋ธ์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฑฐ๋ . ๐
๐จ ์ค์นํ ์ฃผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
โข transformers: Hugging Face์ ํต์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
โข torch: PyTorch ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ
โข accelerate: ๋ชจ๋ธ ๋ก๋ฉ ๋ฐ ์ถ๋ก ๊ฐ์ํ
โข bitsandbytes: ๋ชจ๋ธ ์์ํ๋ฅผ ํตํ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ
โข sentencepiece: ํ ํฌ๋์ด์ ์ง์
์ ์ฝ๋ ์ ์ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๊ณ ์คํํด์ค:
!pip install -q transformers accelerate bitsandbytes sentencepiece
!pip install -q torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
-q ์ต์
์ "quiet" ๋ชจ๋๋ก, ์ค์น ๊ณผ์ ์ ์์ธํ ๋ก๊ทธ๋ฅผ ์ค์ฌ์ค. ์ค์น๋ ๋ณดํต 2-3๋ถ ์ ๋ ๊ฑธ๋ ค. โฑ๏ธ
์ค์น๊ฐ ์๋ฃ๋๋ฉด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ importํด์ ๋ฒ์ ์ ํ์ธํด๋ณด์:
import torch
import transformers
from transformers import AutoTokenizer, AutoModelForCausalLM
print(f"PyTorch ๋ฒ์ : {torch.__version__}")
print(f"Transformers ๋ฒ์ : {transformers.__version__}")
print(f"CUDA ์ฌ์ฉ ๊ฐ๋ฅ: {torch.cuda.is_available()}")
print(f"GPU ์ด๋ฆ: {torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'N/A'}")
CUDA ์ฌ์ฉ ๊ฐ๋ฅ: True๊ฐ ์ถ๋ ฅ๋๋ฉด ๋ชจ๋ ์ค๋น๊ฐ ์๋ฃ๋ ๊ฑฐ์ผ! ๐
๐ก Pro Tip: ๋ง์ฝ CUDA ๊ด๋ จ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋ฉด ๋ฐํ์์ ์ฌ์์ํด๋ด. "๋ฐํ์" โ "๋ฐํ์ ๋ค์ ์์"์ ํด๋ฆญํ๊ณ ์ฒ์๋ถํฐ ๋ค์ ์คํํ๋ฉด ๋๋ถ๋ถ ํด๊ฒฐ๋ผ.
๐ Hugging Face ํ ํฐ ์ค์ ํ๊ธฐ
LLaMA 3๋ Hugging Face Hub์์ ๋ค์ด๋ก๋ํ ์ ์์ด. ํ์ง๋ง Meta์ ๋ผ์ด์ ์ค ๋์๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ Hugging Face ๊ณ์ ๊ณผ ์ก์ธ์ค ํ ํฐ์ด ํ์ํด. ๊ฑฑ์ ๋ง, ๋ฌด๋ฃ์ผ! ๐
STEP 1: Hugging Face ๊ณ์ ์์ฑ
1. huggingface.co ์ ์
2. "Sign Up" ํด๋ฆญํด์ ๋ฌด๋ฃ ๊ณ์ ์์ฑ
3. ์ด๋ฉ์ผ ์ธ์ฆ ์๋ฃ
STEP 2: LLaMA 3 ์ก์ธ์ค ๊ถํ ์์ฒญ
1. huggingface.co/meta-llama/Meta-Llama-3-8B ์ ์
2. "Request Access" ๋ฒํผ ํด๋ฆญ
3. Meta์ ๋ผ์ด์ ์ค ์ฝ๊ด ๋์
4. ์น์ธ๊น์ง ๋ณดํต ๋ช ๋ถ์์ ๋ช ์๊ฐ ์์ (๋๋ถ๋ถ ์ฆ์ ์น์ธ๋จ)
STEP 3: ์ก์ธ์ค ํ ํฐ ์์ฑ
1. Hugging Face ํ๋กํ โ "Settings" โ "Access Tokens"
2. "New token" ํด๋ฆญ
3. ํ ํฐ ์ด๋ฆ ์
๋ ฅ (์: "colab-llama3")
4. Role์ "read" ์ ํ
5. "Generate token" ํด๋ฆญ
6. ์์ฑ๋ ํ ํฐ์ ๋ณต์ฌํด์ ์์ ํ ๊ณณ์ ์ ์ฅ (๋ค์ ๋ณผ ์ ์์ด!)
์ด์ Colab์์ ํ ํฐ์ ์ฌ์ฉํ ์ ์๊ฒ ์ค์ ํ์. ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ด:
๋ฐฉ๋ฒ 1: ์ง์ ์ ๋ ฅ (๊ฐ๋จํ์ง๋ง ๋ณด์์ ์ฃผ์)
from huggingface_hub import login
login(token="์ฌ๊ธฐ์_ํ ํฐ_๋ถ์ฌ๋ฃ๊ธฐ")
๋ฐฉ๋ฒ 2: Colab Secrets ์ฌ์ฉ (๊ถ์ฅ ๐)
1. Colab ์ข์ธก ์ฌ์ด๋๋ฐ์์ ๐ ์์ด์ฝ ํด๋ฆญ
2. "Add new secret" ํด๋ฆญ
3. Name: HF_TOKEN
4. Value: ๋ณต์ฌํ ํ ํฐ ๋ถ์ฌ๋ฃ๊ธฐ
5. "Notebook access" ํ ๊ธ ํ์ฑํ
from google.colab import userdata
from huggingface_hub import login
hf_token = userdata.get('HF_TOKEN')
login(token=hf_token)
๋ก๊ทธ์ธ์ด ์ฑ๊ณตํ๋ฉด "Login successful" ๋ฉ์์ง๊ฐ ํ์๋ผ! โ
๐ฆ LLaMA 3 ๋ชจ๋ธ ๋ก๋ํ๊ธฐ
๋๋์ด ๋ฉ์ธ ์ด๋ฒคํธ์ผ! LLaMA 3 ๋ชจ๋ธ์ ์ค์ ๋ก ๋ก๋ํด๋ณด์. ์ฌ๊ธฐ์๋ 8B(80์ต ํ๋ผ๋ฏธํฐ) ๋ฒ์ ์ ์ฌ์ฉํ ๊ฑฐ์ผ. ์ด๊ฒ Colab ๋ฌด๋ฃ ๋ฒ์ ์์ ๊ฐ์ฅ ์์ ์ ์ผ๋ก ๋์๊ฐ๊ฑฐ๋ . ๐ช
โ ๏ธ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์: LLaMA 3 8B ๋ชจ๋ธ์ ์ฝ 16GB์ GPU ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํด. Colab์ T4 GPU๋ 15GB๋ผ์ ๋นก๋นกํ ์ ์์ด. ๊ทธ๋์ ์ฐ๋ฆฌ๋ 4bit ์์ํ๋ฅผ ์ฌ์ฉํด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ ๊ฑฐ์ผ!
๋จผ์ ํ ํฌ๋์ด์ ๋ฅผ ๋ก๋ํ์. ํ ํฌ๋์ด์ ๋ ์ฐ๋ฆฌ๊ฐ ์ ๋ ฅํ๋ ํ ์คํธ๋ฅผ ๋ชจ๋ธ์ด ์ดํดํ ์ ์๋ ์ซ์(ํ ํฐ)๋ก ๋ณํํด์ฃผ๋ ๋๊ตฌ์ผ:
from transformers import AutoTokenizer
model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
print("ํ ํฌ๋์ด์ ๋ก๋ฉ ์ค...")
tokenizer = AutoTokenizer.from_pretrained(model_id)
print("โ
ํ ํฌ๋์ด์ ๋ก๋ฉ ์๋ฃ!")
์ด์ ๋ชจ๋ธ์ ๋ก๋ํ ์ฐจ๋ก์ผ. 4bit ์์ํ๋ฅผ ์ ์ฉํด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ๋ฉด์ ๋ก๋ํด๋ณด์:
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
import torch
# 4bit ์์ํ ์ค์
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_use_double_quant=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16
)
print("๋ชจ๋ธ ๋ก๋ฉ ์ค... (2-5๋ถ ์์)")
print("โ ์ปคํผ ํ ์ ํ๊ณ ์ค์ธ์!")
model = AutoModelForCausalLM.from_pretrained(
model_id,
quantization_config=bnb_config,
device_map="auto",
trust_remote_code=True
)
print("โ
๋ชจ๋ธ ๋ก๋ฉ ์๋ฃ!")
print(f"๋ชจ๋ธ์ด ์ฌ์ฉ ์ค์ธ ๋๋ฐ์ด์ค: {model.device}")
๐ ์ฝ๋ ์ค๋ช
โข load_in_4bit=True: ๋ชจ๋ธ์ 4bit๋ก ์์ํํด์ ๋ก๋ (๋ฉ๋ชจ๋ฆฌ 75% ์ ์ฝ!)
โข bnb_4bit_use_double_quant: ์ด์ค ์์ํ๋ก ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ
โข bnb_4bit_quant_type="nf4": NormalFloat 4bit ์์ํ ๋ฐฉ์ (์ฑ๋ฅ ์ต์ ํ)
โข bnb_4bit_compute_dtype=torch.bfloat16: ์ฐ์ฐ์ bfloat16์ผ๋ก ์ํ
โข device_map="auto": ์๋์ผ๋ก GPU์ ๋ชจ๋ธ ๋ฐฐ์น
โข trust_remote_code=True: ์ปค์คํ
์ฝ๋ ์คํ ํ์ฉ
๋ก๋ฉ์ด ์๋ฃ๋๋ฉด GPU ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ํ์ธํด๋ณด์:
print(f"ํ ๋น๋ GPU ๋ฉ๋ชจ๋ฆฌ: {torch.cuda.memory_allocated() / 1024**3:.2f} GB")
print(f"์์ฝ๋ GPU ๋ฉ๋ชจ๋ฆฌ: {torch.cuda.memory_reserved() / 1024**3:.2f} GB")
๋ณดํต 4-6GB ์ ๋ ์ฌ์ฉ๋๋ ๊ฑธ ๋ณผ ์ ์์ ๊ฑฐ์ผ. ์์ํ ์์ด ๋ก๋ํ๋ค๋ฉด 15GB ์ด์ ํ์ํ์ ํ ๋ฐ, ์์ฒญ๋ ์ ์ฝ์ด์ง? ๐
๐ก ํธ๋ฌ๋ธ์ํ
: ๋ง์ฝ "CUDA out of memory" ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋ฉด:
1. ๋ฐํ์์ ์ฌ์์ํ๊ณ ๋ค์ ์๋
2. ๋ค๋ฅธ ์
๋ค์ ๋ชจ๋ ์ ๋ฆฌํ๊ณ ๋ฉ๋ชจ๋ฆฌ ํ๋ณด
3. Colab Pro๋ฅผ ๊ณ ๋ ค (๋ ํฐ GPU ์ ๊ณต)
๐ฌ ์ฒซ ๋ฒ์งธ ํ ์คํธ ์์ฑํด๋ณด๊ธฐ
์, ์ด์ ์ ๋ง ์ ๋๋ ์๊ฐ์ด์ผ! ์ฐ๋ฆฌ๊ฐ ๋ก๋ํ LLaMA 3์๊ฒ ์ง๋ฌธ์ ๋์ ธ๋ณด์. ๐ค
LLaMA 3 Instruct ๋ฒ์ ์ ๋ํํ์ผ๋ก ์ค๊ณ๋์ด ์์ด์ ํน์ ํ๋กฌํํธ ํ์์ ๋ฐ๋ผ์ผ ํด. ๋คํํ Hugging Face์ pipeline์ ์ฌ์ฉํ๋ฉด ์ด ๋ชจ๋ ๊ฑธ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ค!
from transformers import pipeline
# ํ
์คํธ ์์ฑ ํ์ดํ๋ผ์ธ ์์ฑ
pipe = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
max_new_tokens=512,
do_sample=True,
temperature=0.7,
top_p=0.95,
)
print("๐ ํ์ดํ๋ผ์ธ ์ค๋น ์๋ฃ!")
โ๏ธ ์์ฑ ํ๋ผ๋ฏธํฐ ์ค๋ช
โข max_new_tokens: ์์ฑํ ์ต๋ ํ ํฐ ์ (512 โ ์ฝ 400๋จ์ด)
โข do_sample=True: ์ํ๋ง ๊ธฐ๋ฐ ์์ฑ (๋ ์ฐฝ์์ )
โข temperature: 0.7 = ์ ๋นํ ์ฐฝ์์ (0์ ๊ฐ๊น์ธ์๋ก ๋ณด์์ , 1์ ๊ฐ๊น์ธ์๋ก ์ฐฝ์์ )
โข top_p: 0.95 = ์์ 95% ํ๋ฅ ์ ํ ํฐ๋ง ๊ณ ๋ ค (nucleus sampling)
์ด์ ์ค์ ๋ก ์ง๋ฌธ์ ๋์ ธ๋ณด์! ๊ฐ๋จํ ์์๋ถํฐ ์์ํด๋ณผ๊ฒ:
# ์ฒซ ๋ฒ์งธ ํ
์คํธ
messages = [
{"role": "system", "content": "๋น์ ์ ์น์ ํ๊ณ ๋์์ด ๋๋ AI ์ด์์คํดํธ์
๋๋ค."},
{"role": "user", "content": "Python์ผ๋ก ํผ๋ณด๋์น ์์ด์ ๊ตฌํ๋ ํจ์๋ฅผ ์์ฑํด์ค."}
]
print("๐ค LLaMA 3๊ฐ ์๊ฐ ์ค...")
outputs = pipe(messages)
response = outputs[0]["generated_text"][-1]["content"]
print("\n๐ฆ LLaMA 3์ ๋ต๋ณ:")
print(response)
์ง์! ๐ LLaMA 3๊ฐ Python ์ฝ๋๋ฅผ ์์ฑํด์คฌ์ ๊ฑฐ์ผ. ์ ๋ง ์ ๊ธฐํ์ง?
์ด๋ฒ์ ์ข ๋ ๋ณต์กํ ์ง๋ฌธ์ ํด๋ณผ๊น:
# ๋ ๋ฒ์งธ ํ
์คํธ - ํ๊ตญ์ด ์ง๋ฌธ
messages = [
{"role": "system", "content": "๋น์ ์ AI ์ ๋ฌธ๊ฐ์
๋๋ค."},
{"role": "user", "content": "๋จธ์ ๋ฌ๋๊ณผ ๋ฅ๋ฌ๋์ ์ฐจ์ด์ ์ ์ด๋ณด์๋ ์ดํดํ ์ ์๊ฒ ์ค๋ช
ํด์ค."}
]
outputs = pipe(messages)
response = outputs[0]["generated_text"][-1]["content"]
print("๐ฆ LLaMA 3์ ๋ต๋ณ:")
print(response)
LLaMA 3๋ ํ๊ตญ์ด๋ ๊ฝค ์ ์ดํดํ๊ณ ๋ต๋ณํด์ค. ๋ฌผ๋ก ์์ด๋งํผ ์๋ฒฝํ์ง ์์ง๋ง, ์ถฉ๋ถํ ์ค์ฉ์ ์ธ ์์ค์ด์ผ! ๐
๐ก ์์ฑ ์๋ ํ: ์ฒซ ๋ฒ์งธ ์์ฑ์ ์ข ๋๋ฆด ์ ์์ด (๋ชจ๋ธ ์๋ฐ์ ). ๋ ๋ฒ์งธ๋ถํฐ๋ ํจ์ฌ ๋นจ๋ผ์ง๋๊น ๊ฑฑ์ ๋ง!
๐จ ๋ค์ํ ํ์ฉ ์์
์ด์ LLaMA 3๋ฅผ ๋ค์ํ ๋ฐฉ์์ผ๋ก ํ์ฉํด๋ณด์! ์ฌ๊ธฐ ๋ช ๊ฐ์ง ์ฌ๋ฏธ์๋ ์์๋ค์ ์ค๋นํ์ด. ๐
์์ 1: ์ฝ๋ ๋ฆฌ๋ทฐ ๋ฐ ๊ฐ์ ์ ์ ๐ป
messages = [
{"role": "system", "content": "๋น์ ์ ์๋์ด ์ํํธ์จ์ด ์์ง๋์ด์
๋๋ค."},
{"role": "user", "content": """
๋ค์ Python ์ฝ๋๋ฅผ ๋ฆฌ๋ทฐํ๊ณ ๊ฐ์ ์ ์ ์ ์ํด์ค:
def calculate_sum(numbers):
sum = 0
for i in range(len(numbers)):
sum = sum + numbers[i]
return sum
"""}
]
outputs = pipe(messages)
print(outputs[0]["generated_text"][-1]["content"])
์์ 2: ์ฐฝ์์ ๊ธ์ฐ๊ธฐ โ๏ธ
messages = [
{"role": "system", "content": "๋น์ ์ ์ฐฝ์์ ์ธ ์๊ฐ์
๋๋ค."},
{"role": "user", "content": "AI๊ฐ ์ธ๊ฐ์ ๊ฐ์ ์ ์ดํดํ๊ฒ ๋ ๋ฏธ๋๋ฅผ ๋ฐฐ๊ฒฝ์ผ๋ก ํ ๋จํธ ์์ค์ ์ฒซ ๋ฌธ๋จ์ ์์ฑํด์ค."}
]
outputs = pipe(messages, max_new_tokens=300, temperature=0.9)
print(outputs[0]["generated_text"][-1]["content"])
๐ก ์ฐฝ์์ ๊ธ์ฐ๊ธฐ์๋ temperature๋ฅผ ๋์ฌ์ ๋ ๋ค์ํ ํํ์ ์ ๋ํด!
์์ 3: ๋ฐ์ดํฐ ๋ถ์ ์กฐ์ธ ๐
messages = [
{"role": "system", "content": "๋น์ ์ ๋ฐ์ดํฐ ๊ณผํ ์ ๋ฌธ๊ฐ์
๋๋ค."},
{"role": "user", "content": "๊ณ ๊ฐ ์ดํ๋ฅ ์ ์์ธกํ๋ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ๋ง๋ค๋ ค๊ณ ํด. ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๊ณ , ์ด๋ค ํน์ฑ(feature)๋ค์ ๊ณ ๋ คํด์ผ ํ ๊น?"}
]
outputs = pipe(messages, max_new_tokens=600)
print(outputs[0]["generated_text"][-1]["content"])
์์ 4: ๋ค๊ตญ์ด ๋ฒ์ญ ๐
messages = [
{"role": "system", "content": "๋น์ ์ ์ ๋ฌธ ๋ฒ์ญ๊ฐ์
๋๋ค."},
{"role": "user", "content": "๋ค์ ๋ฌธ์ฅ์ ์์ฐ์ค๋ฌ์ด ์์ด๋ก ๋ฒ์ญํด์ค: '์ฌ๋ฅ๋ท์ ๋ค์ํ ์ฌ๋ฅ์ ๊ฐ์ง ์ฌ๋๋ค์ด ์๋ก์ ์ง์๊ณผ ๊ธฐ์ ์ ๊ณต์ ํ๋ ํ๋ซํผ์
๋๋ค.'"}
]
outputs = pipe(messages)
print(outputs[0]["generated_text"][-1]["content"])
์์ 5: ๋ํํ ์ฑ๋ด ๋ง๋ค๊ธฐ ๐ค
# ๋ํ ํ์คํ ๋ฆฌ๋ฅผ ์ ์งํ๋ ์ฑ๋ด
conversation_history = [
{"role": "system", "content": "๋น์ ์ ์น๊ทผํ AI ์น๊ตฌ์
๋๋ค."}
]
def chat(user_message):
conversation_history.append({"role": "user", "content": user_message})
outputs = pipe(conversation_history, max_new_tokens=256)
assistant_message = outputs[0]["generated_text"][-1]["content"]
conversation_history.append({"role": "assistant", "content": assistant_message})
return assistant_message
# ์ฌ์ฉ ์์
print("User: ์๋
! ์ค๋ ๊ธฐ๋ถ์ด ์ด๋?")
print(f"LLaMA: {chat('์๋
! ์ค๋ ๊ธฐ๋ถ์ด ์ด๋?')}\n")
print("User: ์ฌ๋ฏธ์๋ ๋๋ด ํ๋ ํด์ค๋?")
print(f"LLaMA: {chat('์ฌ๋ฏธ์๋ ๋๋ด ํ๋ ํด์ค๋?')}")
๐ก ๋ํ ํ์คํ ๋ฆฌ๋ฅผ ์ ์งํ๋ฉด ๋งฅ๋ฝ์ ์ดํดํ๋ ์์ฐ์ค๋ฌ์ด ๋ํ๊ฐ ๊ฐ๋ฅํด!
โก ์ฑ๋ฅ ์ต์ ํ ํ
LLaMA 3๋ฅผ ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด? ์ฌ๊ธฐ ๋ช ๊ฐ์ง ์ต์ ํ ํ์ ์๋ ค์ค๊ฒ! ๐ฅ
1. ๋ฐฐ์น ์ฒ๋ฆฌ๋ก ์ฌ๋ฌ ํ๋กฌํํธ ํ ๋ฒ์ ์ฒ๋ฆฌํ๊ธฐ
# ์ฌ๋ฌ ์ง๋ฌธ์ ํ ๋ฒ์ ์ฒ๋ฆฌ
prompts = [
[{"role": "user", "content": "Python์ด๋?"}],
[{"role": "user", "content": "JavaScript๋?"}],
[{"role": "user", "content": "Rust๋?"}]
]
# ๋ฐฐ์น ์ฒ๋ฆฌ
outputs = pipe(prompts, batch_size=3, max_new_tokens=100)
for i, output in enumerate(outputs):
print(f"\n์ง๋ฌธ {i+1}์ ๋ต๋ณ:")
print(output[0]["generated_text"][-1]["content"])
๐ก ๋ฐฐ์น ์ฒ๋ฆฌ๋ ๊ฐ๋ณ ์ฒ๋ฆฌ๋ณด๋ค 2-3๋ฐฐ ๋น ๋ฅผ ์ ์์ด!
2. ์บ์ฑ ํ์ฉํ๊ธฐ
# ๋์ผํ ์์คํ
ํ๋กฌํํธ๋ฅผ ๋ฐ๋ณต ์ฌ์ฉํ ๋
from transformers import Cache
# KV ์บ์ ํ์ฑํ (๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์)
model.config.use_cache = True
# ์ด์ ๋์ผํ ์ปจํ
์คํธ์์ ์ฌ๋ฌ ์ง๋ฌธ์ ํ ๋ ๋ ๋นจ๋ผ์ ธ!
3. ์์ฑ ๊ธธ์ด ์ ํํ๊ธฐ
# ์งง์ ๋ต๋ณ๋ง ํ์ํ ๋
outputs = pipe(
messages,
max_new_tokens=50, # ์งง๊ฒ ์ค์
min_new_tokens=10, # ์ต์ ๊ธธ์ด๋ ์ค์ ๊ฐ๋ฅ
)
๐ก ํ ํฐ ์๋ฅผ ์ค์ด๋ฉด ์์ฑ ์๋๊ฐ ํฌ๊ฒ ํฅ์๋ผ!
4. Greedy Decoding ์ฌ์ฉํ๊ธฐ (์๋ ์ฐ์ )
# ๊ฐ์ฅ ํ๋ฅ ๋์ ํ ํฐ๋ง ์ ํ (๋น ๋ฅด์ง๋ง ๋ ์ฐฝ์์ )
outputs = pipe(
messages,
do_sample=False, # ์ํ๋ง ๋นํ์ฑํ
max_new_tokens=200
)
5. Flash Attention ์ฌ์ฉํ๊ธฐ (๊ณ ๊ธ)
# Flash Attention 2 ์ค์น (๋ ๋น ๋ฅธ ์ดํ
์
์ฐ์ฐ)
!pip install flash-attn --no-build-isolation
# ๋ชจ๋ธ ๋ก๋ ์ ์ ์ฉ
model = AutoModelForCausalLM.from_pretrained(
model_id,
quantization_config=bnb_config,
device_map="auto",
attn_implementation="flash_attention_2" # ์ถ๊ฐ!
)
๐ก Flash Attention์ ์ต๋ 2-3๋ฐฐ ์๋ ํฅ์ ๊ฐ๋ฅ! (์ค์น๊ฐ ๊น๋ค๋ก์ธ ์ ์์)
| ์ต์ ํ ๊ธฐ๋ฒ | ์๋ ํฅ์ | ํ์ง ์ํฅ | ๋์ด๋ |
|---|---|---|---|
| ๋ฐฐ์น ์ฒ๋ฆฌ | โญโญโญ | ์์ | ์ฌ์ |
| ์์ฑ ๊ธธ์ด ์ ํ | โญโญโญ | ์์ | ์ฌ์ |
| Greedy Decoding | โญโญ | ์ฐฝ์์ฑ ๊ฐ์ | ์ฌ์ |
| 4bit ์์ํ | โญโญ | ์ฝ๊ฐ ๊ฐ์ | ๋ณดํต |
| Flash Attention | โญโญโญ | ์์ | ์ด๋ ค์ |
๐ ์์ฃผ ๋ฐ์ํ๋ ๋ฌธ์ ์ ํด๊ฒฐ๋ฒ
Colab์์ LLaMA 3๋ฅผ ์ฌ์ฉํ๋ค ๋ณด๋ฉด ๋ช ๊ฐ์ง ๋ฌธ์ ์ ๋ถ๋ชํ ์ ์์ด. ๋ฏธ๋ฆฌ ์์๋๋ฉด ๋นํฉํ์ง ์๊ณ ํด๊ฒฐํ ์ ์์ง! ๐ช
๋ฌธ์ 1: CUDA Out of Memory ์๋ฌ ๐ฅ
์ฆ์: RuntimeError: CUDA out of memory
ํด๊ฒฐ ๋ฐฉ๋ฒ:
1. ๋ฐํ์ ์ฌ์์: "๋ฐํ์" โ "๋ฐํ์ ๋ค์ ์์"
2. GPU ๋ฉ๋ชจ๋ฆฌ ์ ๋ฆฌ:
import torch
torch.cuda.empty_cache()
import gc
gc.collect()
3. ๋ ์์ ๋ชจ๋ธ ์ฌ์ฉ (์: LLaMA 3 8B ๋์ ๋ค๋ฅธ ๊ฒฝ๋ ๋ชจ๋ธ)
4. ์์ํ ๋นํธ ๋ฎ์ถ๊ธฐ (4bit โ 8bit๋ ์ญํจ๊ณผ, 3bit ์๋)
๋ฌธ์ 2: ํ ํฐ ์์ฑ์ด ๋๋ฌด ๋๋ฆผ ๐
์ฆ์: ํ ํ ํฐ ์์ฑ์ 1์ด ์ด์ ์์
ํด๊ฒฐ ๋ฐฉ๋ฒ:
1. GPU๊ฐ ์ ๋๋ก ํ ๋น๋์๋์ง ํ์ธ:
print(model.device) # cuda:0 ์ด์ด์ผ ํจ
2. ๋ฐฐ์น ํฌ๊ธฐ ์กฐ์
3. max_new_tokens ๊ฐ ์ค์ด๊ธฐ
4. Colab Pro ๊ณ ๋ ค (๋ ๋น ๋ฅธ GPU)
๋ฌธ์ 3: ๋ชจ๋ธ ๋ค์ด๋ก๋ ์คํจ โ
์ฆ์: HTTPError 401 ๋๋ Repository not found
ํด๊ฒฐ ๋ฐฉ๋ฒ:
1. Hugging Face ํ ํฐ ํ์ธ
2. LLaMA 3 ์ก์ธ์ค ๊ถํ ์น์ธ ์ฌ๋ถ ํ์ธ
3. ํ ํฐ ๊ถํ์ด "read"์ธ์ง ํ์ธ
4. ๋ก๊ทธ์ธ ๋ค์ ์๋:
from huggingface_hub import login
login(token="your_token_here", add_to_git_credential=True)
๋ฌธ์ 4: ํ๊ตญ์ด ๋ต๋ณ ํ์ง์ด ๋ฎ์ ๐ฐ๐ท
์ฆ์: ์์ด๋ก ๋ต๋ณํ๊ฑฐ๋ ์ด์ํ ํ๊ตญ์ด
ํด๊ฒฐ ๋ฐฉ๋ฒ:
1. ์์คํ
ํ๋กฌํํธ์ ๋ช
์:
{"role": "system", "content": "๋น์ ์ ํ๊ตญ์ด๋ก๋ง ๋ต๋ณํ๋ AI์
๋๋ค. ๋ชจ๋ ๋ต๋ณ์ ์์ฐ์ค๋ฌ์ด ํ๊ตญ์ด๋ก ์์ฑํ์ธ์."}
2. Few-shot ์์ ์ ๊ณต
3. ์์ด ์ง๋ฌธ ํ ๋ฒ์ญ ์์ฒญ
4. ํ๊ตญ์ด ํนํ ๋ชจ๋ธ ๊ณ ๋ ค (์: KULLM, Polyglot-Ko)
๋ฌธ์ 5: ์ธ์ ํ์์์ โฐ
์ฆ์: 90๋ถ ์ ํด ํ ๋ฐํ์ ์ฐ๊ฒฐ ๋๊น
ํด๊ฒฐ ๋ฐฉ๋ฒ:
1. ์ฃผ๊ธฐ์ ์ผ๋ก ์ฝ๋ ์คํ
2. ์๋ ์คํ ์คํฌ๋ฆฝํธ (๋ธ๋ผ์ฐ์ ์ฝ์):
// ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ ์ฝ์์ ์
๋ ฅ
function KeepAlive() {
console.log("Keeping alive...");
document.querySelector("colab-connect-button").click();
}
setInterval(KeepAlive, 60000); // 1๋ถ๋ง๋ค ์คํ
3. Colab Pro ๊ตฌ๋ (๋ ๊ธด ์ธ์ ์๊ฐ)
๐ก Pro Tip: ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ ๋๋ ์ฌ๋ฅ๋ท์ AI/๋จธ์ ๋ฌ๋ ์ ๋ฌธ๊ฐ๋ค์๊ฒ ๋์์ ์์ฒญํด๋ด. ์ค์ ๊ฒฝํ์ด ํ๋ถํ ๊ฐ๋ฐ์๋ค์ด ๊ตฌ์ฒด์ ์ธ ํด๊ฒฐ์ฑ ์ ์ ์ํด์ค ๊ฑฐ์ผ!
๐ LLaMA 3 vs ๋ค๋ฅธ ๋ชจ๋ธ ๋น๊ต
"LLaMA 3๊ฐ ์ ๋ง ์ข์ ๊ฑด๊ฐ?" ๊ถ๊ธํ์ง? ๋ค๋ฅธ ์ธ๊ธฐ ๋ชจ๋ธ๋ค๊ณผ ๋น๊ตํด๋ณผ๊ฒ! ๐
| ๋ชจ๋ธ | ํ๋ผ๋ฏธํฐ | ์คํ์์ค | Colab ๋ฌด๋ฃ ์คํ | ํ๊ตญ์ด ์ง์ | ํน์ง |
|---|---|---|---|---|---|
| LLaMA 3 8B | 80์ต | โ | โ (4bit) | โญโญโญ | ๊ท ํ์กํ ์ฑ๋ฅ |
| GPT-3.5 | 1750์ต | โ | โ (API๋ง) | โญโญโญโญโญ | ์์ฉ ์๋น์ค |
| Mistral 7B | 70์ต | โ | โ | โญโญโญ | ๋น ๋ฅธ ์ถ๋ก |
| Gemma 7B | 70์ต | โ | โ | โญโญโญโญ | Google ์ ์ |
| KULLM 12.8B | 128์ต | โ | โ ๏ธ (๋นก๋นก) | โญโญโญโญโญ | ํ๊ตญ์ด ํนํ |
| Claude 3 | ๋น๊ณต๊ฐ | โ | โ (API๋ง) | โญโญโญโญโญ | ๊ธด ์ปจํ ์คํธ |
๐ LLaMA 3์ ๊ฐ์
1. ์์ ์คํ์์ค
์ฝ๋ ์์ , ํ์ธํ๋, ์์
์ ์ฌ์ฉ ๋ชจ๋ ๊ฐ๋ฅ (๋ผ์ด์ ์ค ๋ฒ์ ๋ด)
2. ๋ฐ์ด๋ ์ฝ๋ ์์ฑ ๋ฅ๋ ฅ
ํ๋ก๊ทธ๋๋ฐ ๊ด๋ จ ์์
์์ GPT-3.5์ ๋น์ทํ ์์ค
3. ํ๋ฐํ ์ปค๋ฎค๋ํฐ
Hugging Face, Reddit, GitHub์ ํ๋ถํ ์๋ฃ์ ์์
4. ํฉ๋ฆฌ์ ์ธ ํ๋์จ์ด ์๊ตฌ์ฌํญ
์์ํ ์ ์ฉ ์ ์๋น์๊ธ GPU์์๋ ์คํ ๊ฐ๋ฅ
5. ์ง์์ ์ธ ์
๋ฐ์ดํธ
Meta๊ฐ ๊พธ์คํ ๊ฐ์ ๋ฒ์ ์ถ์
โ ๏ธ LLaMA 3์ ์ฝ์
1. ํ๊ตญ์ด ์ฑ๋ฅ
์์ด ๋๋น ํ๊ตญ์ด ์ดํด๋์ ์์ฑ ํ์ง์ด ๋ฎ์
2. ์ต์ ์ ๋ณด ๋ถ์กฑ
ํ์ต ๋ฐ์ดํฐ ์ปท์คํ ์์ ์ดํ ์ ๋ณด ์์
3. ์์ ์ฑ ํํฐ
๋๋๋ก ๊ณผ๋ํ๊ฒ ๋ณด์์ ์ธ ๋ต๋ณ ๊ฑฐ๋ถ
4. ๊ธด ์ปจํ
์คํธ ์ฒ๋ฆฌ
8K ํ ํฐ ์ ํ (Claude 3๋ 200K๊น์ง ์ง์)
๐ ์ค์ ํ๋ก์ ํธ ์์ด๋์ด
์ด์ LLaMA 3๋ฅผ ํ์ฉํด์ ๋ญ๊ฐ ๋ง๋ค์ด๋ณด๊ณ ์ถ์ง? ์ฌ๊ธฐ ๋ช ๊ฐ์ง ์ฌ๋ฏธ์๋ ํ๋ก์ ํธ ์์ด๋์ด๋ฅผ ์๊ฐํ ๊ฒ! ๐
ํ๋ก์ ํธ 1: ๊ฐ์ธ ์ฝ๋ฉ ์ด์์คํดํธ ๐ป
๋ชฉํ: ์ฝ๋ ์์ฑ, ๋๋ฒ๊น
, ๋ฆฌํฉํ ๋ง์ ๋์์ฃผ๋ AI
๊ตฌํ ์์ด๋์ด:
โข Streamlit์ผ๋ก ์น ์ธํฐํ์ด์ค ๊ตฌ์ถ
โข ์ฝ๋ ์
๋ ฅ โ LLaMA 3 ๋ถ์ โ ๊ฐ์ ์ ์
โข ์ฌ๋ฌ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ง์
โข ์ฝ๋ ์คํ ๊ฒฐ๊ณผ์ ์๋ฌ ๋ฉ์์ง ๋ถ์
๋์ด๋: โญโญโญ (์ค๊ธ)
์์ ์์ ์๊ฐ: 1-2์ฃผ
ํ๋ก์ ํธ 2: ๋ธ๋ก๊ทธ ๊ธ ์๋ ์์ฑ๊ธฐ โ๏ธ
๋ชฉํ: ํค์๋ ์
๋ ฅํ๋ฉด SEO ์ต์ ํ๋ ๋ธ๋ก๊ทธ ๊ธ ์์ฑ
๊ตฌํ ์์ด๋์ด:
โข ์ฃผ์ ํค์๋ ์
๋ ฅ
โข LLaMA 3๊ฐ ๋ชฉ์ฐจ ์์ฑ
โข ๊ฐ ์น์
๋ณ ๋ด์ฉ ์๋ ์์ฑ
โข ๋ฉํ ์ค๋ช
, ํ๊ทธ ์๋ ์์ฑ
๋์ด๋: โญโญ (์ด์ค๊ธ)
์์ ์์ ์๊ฐ: 3-5์ผ
ํ๋ก์ ํธ 3: ํ์ต ๋์ฐ๋ฏธ ์ฑ๋ด ๐
๋ชฉํ: ํน์ ์ฃผ์ ์ ๋ํด ์ง๋ฌธํ๊ณ ํ์ตํ ์ ์๋ ์ฑ๋ด
๊ตฌํ ์์ด๋์ด:
โข RAG (Retrieval-Augmented Generation) ์ ์ฉ
โข PDF, ํ
์คํธ ํ์ผ์์ ์ง์ ์ถ์ถ
โข ์ง๋ฌธ์ ๋ํ ์ถ์ฒ ํ์
โข ํด์ฆ ์์ฑ ๊ธฐ๋ฅ
๋์ด๋: โญโญโญโญ (๊ณ ๊ธ)
์์ ์์ ์๊ฐ: 2-3์ฃผ
ํ๋ก์ ํธ 4: ์์ ๋ฏธ๋์ด ์ฝํ ์ธ ์์ฑ๊ธฐ ๐ฑ
๋ชฉํ: ํธ์ํฐ, ์ธ์คํ๊ทธ๋จ ๊ฒ์๋ฌผ ์๋ ์์ฑ
๊ตฌํ ์์ด๋์ด:
โข ์ฃผ์ ๋๋ ์ด๋ฏธ์ง ์
๋ ฅ
โข ํ๋ซํผ๋ณ ์ต์ ๊ธธ์ด๋ก ํ
์คํธ ์์ฑ
โข ํด์ํ๊ทธ ์๋ ์ถ์ฒ
โข ์ฌ๋ฌ ๋ฒ์ ์์ฑ ํ ์ ํ
๋์ด๋: โญโญ (์ด์ค๊ธ)
์์ ์์ ์๊ฐ: 1์ฃผ
ํ๋ก์ ํธ 5: ๋ฐ์ดํฐ ๋ถ์ ๋ฆฌํฌํธ ์๋ํ ๐
๋ชฉํ: CSV ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๊ณ ์ธ์ฌ์ดํธ ๋ฆฌํฌํธ ์์ฑ
๊ตฌํ ์์ด๋์ด:
โข Pandas๋ก ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
โข ๊ธฐ์ด ํต๊ณ ๊ณ์ฐ
โข LLaMA 3๊ฐ ์ธ์ฌ์ดํธ ํด์
โข ์๊ฐํ ์ ์ ๋ฐ ์ค๋ช
๋์ด๋: โญโญโญ (์ค๊ธ)
์์ ์์ ์๊ฐ: 1-2์ฃผ
๐ก ํ๋ก์ ํธ ํ: ์ฒ์์๋ ์๊ฒ ์์ํด! ๊ธฐ๋ณธ ๊ธฐ๋ฅ๋ถํฐ ๊ตฌํํ๊ณ ์ ์ง์ ์ผ๋ก ๊ฐ์ ํ๋ ๊ฒ ์ข์. ๋งํ๋ ๋ถ๋ถ์ด ์๋ค๋ฉด ์ฌ๋ฅ๋ท์์ ๋ฉํ ๋ฅผ ์ฐพ์๋ณด๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์ผ. ์ค๋ฌด ๊ฒฝํ์์ ํผ๋๋ฐฑ์ ์ ๋ง ๊ฐ์ง๊ฑฐ๋ ! ๐
๐ ๋ณด์ ๋ฐ ์ค๋ฆฌ์ ๊ณ ๋ ค์ฌํญ
๊ฐ๋ ฅํ AI ๋ชจ๋ธ์ ์ฌ์ฉํ ๋๋ ์ฑ ์๊ฐ๋ ํจ๊ป ๋ฐ๋ผ์์ผ ํด. ๋ช ๊ฐ์ง ์ค์ํ ์ฌํญ๋ค์ ์ง๊ณ ๋์ด๊ฐ์! ๐ก๏ธ
1. ๊ฐ์ธ์ ๋ณด ๋ณดํธ ๐
์ฃผ์์ฌํญ:
โข LLaMA 3์ ๊ฐ์ธ์ ๋ณด(์ด๋ฆ, ์ฃผ์, ์ ํ๋ฒํธ ๋ฑ)๋ฅผ ์
๋ ฅํ์ง ๋ง ๊ฒ
โข ๋ฏผ๊ฐํ ๋น์ฆ๋์ค ์ ๋ณด๋ ๊ธฐ๋ฐ ๋ฐ์ดํฐ ์ฌ์ฉ ๊ธ์ง
โข Colab ๋
ธํธ๋ถ์ ๊ณต๊ฐ ์ค์ ์ ๋๊ตฌ๋ ๋ณผ ์ ์์
๊ถ์ฅ์ฌํญ:
โข ํ
์คํธ์ฉ ๊ฐ์ ๋ฐ์ดํฐ ์ฌ์ฉ
โข ์ค์ํ ํ๋ก์ ํธ๋ ๋ก์ปฌ ํ๊ฒฝ์์ ์คํ
โข ๋
ธํธ๋ถ ๊ณต์ ์ ๋ฏผ๊ฐํ ์ ๋ณด ์ ๊ฑฐ
2. ์์ฑ ์ฝํ ์ธ ์ ์ ํ์ฑ ๊ฒ์ฆ โ
๋ฌธ์ ์ :
โข AI๋ ๋๋๋ก ๊ทธ๋ด๋ฏํ์ง๋ง ํ๋ฆฐ ์ ๋ณด๋ฅผ ์์ฑ (ํ ๋ฃจ์๋ค์ด์
)
โข ์ต์ ์ ๋ณด๋ ์ ๋ฌธ์ ์ธ ๋ด์ฉ์ ๋ถ์ ํํ ์ ์์
๋์ ๋ฐฉ๋ฒ:
โข ์ค์ํ ์ ๋ณด๋ ๋ฐ๋์ ํฉํธ ์ฒดํฌ
โข ์๋ฃ, ๋ฒ๋ฅ , ๊ธ์ต ์กฐ์ธ์ ์ ๋ฌธ๊ฐ ํ์ธ ํ์
โข ์ถ์ฒ ์์ฒญ ๋ฐ ๊ต์ฐจ ๊ฒ์ฆ
3. ํธํฅ์ฑ ์ธ์ โ๏ธ
์ฃผ์์ฌํญ:
โข ํ์ต ๋ฐ์ดํฐ์ ํธํฅ์ด ๋ชจ๋ธ์ ๋ฐ์๋ ์ ์์
โข ์ฑ๋ณ, ์ธ์ข
, ๋ฌธํ์ ๊ณ ์ ๊ด๋
์ฃผ์
์ํ ๋ฐฉ๋ฒ:
โข ๋ค์ํ ๊ด์ ์์ ์ง๋ฌธํ๊ธฐ
โข ํธํฅ๋ ๋ต๋ณ ๋ฐ๊ฒฌ ์ ์ฌ์ง๋ฌธ
โข ์์คํ
ํ๋กฌํํธ์ ๊ณต์ ์ฑ ๊ฐ์กฐ
4. ์ ์๊ถ ๋ฐ ๋ผ์ด์ ์ค ์ค์ ๐
LLaMA 3 ๋ผ์ด์ ์ค ์ฃผ์ ๋ด์ฉ:
โข ์ฐ๊ตฌ ๋ฐ ์์
์ ์ฌ์ฉ ๊ฐ๋ฅ
โข ์ ํ์ฑ ์ฌ์ฉ์ 7์ต ๋ช
์ด์ ์๋น์ค๋ ๋ณ๋ ์น์ธ ํ์
โข ์์ฑ๋ ์ฝํ
์ธ ์ ์ฑ
์์ ์ฌ์ฉ์์๊ฒ ์์
๊ถ์ฅ์ฌํญ:
โข ๊ณต์ ๋ผ์ด์ ์ค ๋ฌธ์ ํ์ธ
โข ์์ฑ ์ฝํ
์ธ ์ฌ์ฉ ์ AI ์์ฑ ํ์
โข ํ์ธ์ ์ ์๋ฌผ ๋ฌด๋จ ํ์ต ๊ธ์ง
๐ ์ค๋ฆฌ์ AI ์ฌ์ฉ ๊ฐ์ด๋๋ผ์ธ
1. ํฌ๋ช
์ฑ: AI ์ฌ์ฉ ์ฌ์ค์ ๋ช
ํํ ๋ฐํ๊ธฐ
2. ์ฑ
์๊ฐ: ์์ฑ ์ฝํ
์ธ ์ ๊ฒฐ๊ณผ์ ๋ํ ์ฑ
์ ์ธ์
3. ๊ณต์ ์ฑ: ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๊ณตํํ ์๋น์ค ์ ๊ณต
4. ์์ ์ฑ: ์ ํดํ ์ฝํ
์ธ ์์ฑ ๋ฐฉ์ง
5. ํ๋ผ์ด๋ฒ์: ์ฌ์ฉ์ ๋ฐ์ดํฐ ๋ณดํธ
6. ์ง์๊ฐ๋ฅ์ฑ: ํ๊ฒฝ ์ํฅ ๊ณ ๋ ค (์๋์ง ์๋น)
๐ ๋ ๋ฐฐ์ฐ๊ณ ์ถ๋ค๋ฉด?
LLaMA 3๋ฅผ ๋ง์คํฐํ๋ ์ฌ์ ์ ์ด์ ์์์ด์ผ! ๋ ๊น์ด ๊ณต๋ถํ๊ณ ์ถ๋ค๋ฉด ์ด๋ฐ ๋ฆฌ์์ค๋ค์ ์ถ์ฒํด. ๐
๐ ๊ณต์ ๋ฌธ์ ๋ฐ ๋ฆฌ์์ค
1. Hugging Face Transformers ๋ฌธ์
huggingface.co/docs/transformers
๊ฐ์ฅ ๊ถ์์๋ ๊ณต์ ๋ฌธ์. ๋ชจ๋ ๊ธฐ๋ฅ๊ณผ ์์ ํฌํจ
2. Meta AI ๋ธ๋ก๊ทธ
ai.meta.com/blog
LLaMA ์๋ฆฌ์ฆ์ ์ต์ ์
๋ฐ์ดํธ์ ์ฐ๊ตฌ ๋
ผ๋ฌธ
3. PyTorch ํํ ๋ฆฌ์ผ
pytorch.org/tutorials
๋ฅ๋ฌ๋ ๊ธฐ์ด๋ถํฐ ๊ณ ๊ธ๊น์ง
4. Papers with Code
paperswithcode.com
์ต์ AI ๋
ผ๋ฌธ๊ณผ ๊ตฌํ ์ฝ๋
๐ฅ ์ปค๋ฎค๋ํฐ ๋ฐ ํฌ๋ผ
1. Hugging Face Forums
์ง๋ฌธํ๊ณ ๋ต๋ณ ๋ฐ๊ธฐ ์ข์ ๊ณณ
2. Reddit r/LocalLLaMA
๋ก์ปฌ์์ LLM ์คํํ๋ ์ฌ๋๋ค์ ์ปค๋ฎค๋ํฐ
3. Discord ์๋ฒ๋ค
์ค์๊ฐ ์ง๋ฌธ๊ณผ ํ ๋ก (Hugging Face, EleutherAI ๋ฑ)
4. GitHub Discussions
์คํ์์ค ํ๋ก์ ํธ์ ์ด์์ ํ ๋ก
๐ฅ ์จ๋ผ์ธ ๊ฐ์ ๋ฐ ํํ ๋ฆฌ์ผ
1. Fast.ai
์ค์ฉ์ ์ธ ๋ฅ๋ฌ๋ ๊ฐ์ (๋ฌด๋ฃ)
2. DeepLearning.AI
Andrew Ng์ ์ฒด๊ณ์ ์ธ AI ๊ฐ์
3. YouTube ์ฑ๋๋ค
โข Yannic Kilcher (๋
ผ๋ฌธ ๋ฆฌ๋ทฐ)
โข Sentdex (์ค์ ์ฝ๋ฉ)
โข Two Minute Papers (์ต์ ์ฐ๊ตฌ ์์ฝ)
4. ์ฌ๋ฅ๋ท AI/๋จธ์ ๋ฌ๋ ๊ฐ์
์ค๋ฌด ์ ๋ฌธ๊ฐ์ 1:1 ๋ง์ถค ๊ต์ก (https://www.jaenung.net)
๐ ์ถ์ฒ ๋์
1. "Hands-On Large Language Models"
์ค์ LLM ํ์ฉ๋ฒ
2. "Natural Language Processing with Transformers"
Transformer ์ํคํ
์ฒ ๊น์ด ์ดํด
3. "Deep Learning" by Ian Goodfellow
๋ฅ๋ฌ๋์ ๋ฐ์ด๋ธ
4. "Designing Machine Learning Systems"
ML ์์คํ
์ค๊ณ ๋ฐ ์ด์
๐ก ํ์ต ํ: ์ด๋ก ๋ง ๊ณต๋ถํ์ง ๋ง๊ณ ์ง์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์คํํด๋ด! ์์ ํ๋ก์ ํธ๋ถํฐ ์์ํด์ ์ ์ ๋ณต์กํ ๊ฒ์ผ๋ก ๋์๊ฐ๋ ๊ฒ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ํ์ต ๋ฐฉ๋ฒ์ด์ผ. ๊ทธ๋ฆฌ๊ณ ๋งํ๋ฉด ์ฃผ์ ํ์ง ๋ง๊ณ ์ปค๋ฎค๋ํฐ์ ์ง๋ฌธํ๊ฑฐ๋ ์ ๋ฌธ๊ฐ์ ๋์์ ๋ฐ์๋ด! ๐
๐ฏ ๋ง๋ฌด๋ฆฌํ๋ฉฐ
์! ์ฌ๊ธฐ๊น์ง ์ฝ์๋ค๋ฉด ์ ๋ง ๋๋จํด! ๐ ์ด์ ๋๋ Google Colab์์ LLaMA 3๋ฅผ ๋ก๋ํ๊ณ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์๋ฒฝํ๊ฒ ๋ง์คํฐํ์ด.
์ฐ๋ฆฌ๊ฐ ํจ๊ป ๋ฐฐ์ด ๋ด์ฉ์ ์ ๋ฆฌํด๋ณผ๊น?
โ ์ค๋ ๋ฐฐ์ด ํต์ฌ ๋ด์ฉ
1. LLaMA 3 ์ดํด
โข Meta์ ์คํ์์ค ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ
โข 8B, 70B ๋ฑ ๋ค์ํ ํฌ๊ธฐ ์ ๊ณต
โข ์์
์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ผ์ด์ ์ค
2. Colab ํ๊ฒฝ ์ค์
โข GPU ๋ฐํ์ ํ์ฑํ
โข ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
โข Hugging Face ํ ํฐ ์ค์
3. ๋ชจ๋ธ ๋ก๋ฉ ๋ฐ ์ต์ ํ
โข 4bit ์์ํ๋ก ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ
โข ํ ํฌ๋์ด์ ์ ๋ชจ๋ธ ๋ก๋
โข ํ์ดํ๋ผ์ธ ์์ฑ
4. ์ค์ ํ์ฉ
โข ๋ค์ํ ํ๋กฌํํธ ์์ฑ๋ฒ
โข ์ฝ๋ ์์ฑ, ๋ฒ์ญ, ์ฑ๋ด ๋ฑ
โข ์ฑ๋ฅ ์ต์ ํ ๊ธฐ๋ฒ
5. ๋ฌธ์ ํด๊ฒฐ
โข ์์ฃผ ๋ฐ์ํ๋ ์๋ฌ ๋์
โข ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
โข ํ์ง ๊ฐ์ ๋ฐฉ๋ฒ
6. ์ค๋ฆฌ์ ์ฑ
์
โข ๊ฐ์ธ์ ๋ณด ๋ณดํธ
โข ์ฝํ
์ธ ๊ฒ์ฆ
โข ๋ผ์ด์ ์ค ์ค์
AI ๊ธฐ์ ์ ์ ๋ง ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๊ณ ์์ด. ์ค๋ ๋ฐฐ์ด LLaMA 3๋ ๊ณง ๋ ๊ฐ๋ ฅํ ๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธ๋ ๊ฑฐ์ผ. ํ์ง๋ง ๊ฑฑ์ ๋ง! ์ค๋ ๋ฐฐ์ด ๊ธฐ๋ณธ ์๋ฆฌ์ ๋ฐฉ๋ฒ๋ก ์ ๊ณ์ ์ ํจํ ๊ฑฐ๊ฑฐ๋ . ๐ช
๊ฐ์ฅ ์ค์ํ ๊ฑด ์ง์ ํด๋ณด๋ ๊ฒ์ด์ผ. ์ด ๊ธ์ ์ฝ๊ธฐ๋ง ํ์ง ๋ง๊ณ , ์ง๊ธ ๋ฐ๋ก Colab์ ์ด์ด์ ์ฝ๋๋ฅผ ์คํํด๋ด. ์๋ฌ๊ฐ ๋๋ ๊ด์ฐฎ์. ๊ทธ๊ฒ ๋ฐ๋ก ๋ฐฐ์ฐ๋ ๊ณผ์ ์ด๋๊น! ๐
๊ทธ๋ฆฌ๊ณ ํผ์ ๊ณต๋ถํ๊ธฐ ํ๋ค๋ค๋ฉด? ์ฌ๋ฅ๋ท์์ AI/๋จธ์ ๋ฌ๋ ์ ๋ฌธ๊ฐ๋ค๊ณผ ํจ๊ป ๋ฐฐ์๋ด. ์ค๋ฌด ๊ฒฝํ์ด ํ๋ถํ ๊ฐ๋ฐ์๋ค์ด ๋์ ์ฑ์ฅ์ ๋์์ค ๊ฑฐ์ผ. ๋๋ก๋ ์ข์ ๋ฉํ ํ ๋ช
์ด ์์ญ ๊ถ์ ์ฑ
๋ณด๋ค ๋ ํฐ ๋์์ด ๋๊ฑฐ๋ ! ๐
์, ์ด์ ์ ๋ง๋ก ์์ํ ์๊ฐ์ด์ผ! ๐
๐ ์ถํํด! ๋๋ ์ด์ LLaMA 3 ๋ง์คํฐ์ผ! ๐
์ค๋ ๋ฐฐ์ด ์ง์์ผ๋ก ๋ฉ์ง AI ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด๋ด!
๊ทธ๋ฆฌ๊ณ ๋ค๊ฐ ๋ง๋ ๊ฑธ ์ธ์๊ณผ ๊ณต์ ํ๋ ๊ฑธ ์์ง ๋ง! ๐
์ง๋ฌธ์ด๋ ํผ๋๋ฐฑ์ด ์๋ค๋ฉด ์ธ์ ๋ ์ปค๋ฎค๋ํฐ์ ๊ณต์ ํด์ค.
์ฐ๋ฆฌ ๋ชจ๋ ํจ๊ป ์ฑ์ฅํ๋ ๊ฑฐ๋๊น! ๐ฑ
Happy Coding! ์ฆ๊ฑฐ์ด AI ๊ฐ๋ฐ ๋๊ธธ! ๐ฆโจ
๊ด๋ จ ํค์๋
๋๊ธ 0
์ง์์ธ์ ์ฒ - ์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
- ์ ์๊ถ ๋ฐ ์์ ๊ถ: ๋ณธ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ๋ ์ AI ๊ธฐ์ ๋ก ์์ฑ๋์์ผ๋ฉฐ, ๋ํ๋ฏผ๊ตญ ์ ์๊ถ๋ฒ ๋ฐ ๊ตญ์ ์ ์๊ถ ํ์ฝ์ ์ํด ๋ณดํธ๋ฉ๋๋ค.
- AI ์์ฑ ์ปจํ ์ธ ์ ๋ฒ์ ์ง์: ๋ณธ AI ์์ฑ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ์ง์ ์ฐฝ์๋ฌผ๋ก ์ธ์ ๋๋ฉฐ, ๊ด๋ จ ๋ฒ๊ท์ ๋ฐ๋ผ ์ ์๊ถ ๋ณดํธ๋ฅผ ๋ฐ์ต๋๋ค.
- ์ฌ์ฉ ์ ํ: ์ฌ๋ฅ๋ท์ ๋ช ์์ ์๋ฉด ๋์ ์์ด ๋ณธ ์ปจํ ์ธ ๋ฅผ ๋ณต์ , ์์ , ๋ฐฐํฌ, ๋๋ ์์ ์ ์ผ๋ก ํ์ฉํ๋ ํ์๋ ์๊ฒฉํ ๊ธ์ง๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ง ๊ธ์ง: ๋ณธ ์ปจํ ์ธ ์ ๋ํ ๋ฌด๋จ ์คํฌ๋ํ, ํฌ๋กค๋ง, ๋ฐ ์๋ํ๋ ๋ฐ์ดํฐ ์์ง์ ๋ฒ์ ์ ์ฌ์ ๋์์ด ๋ฉ๋๋ค.
- AI ํ์ต ์ ํ: ์ฌ๋ฅ๋ท์ AI ์์ฑ ์ปจํ ์ธ ๋ฅผ ํ AI ๋ชจ๋ธ ํ์ต์ ๋ฌด๋จ ์ฌ์ฉํ๋ ํ์๋ ๊ธ์ง๋๋ฉฐ, ์ด๋ ์ง์ ์ฌ์ฐ๊ถ ์นจํด๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.

๋๊ธ ์์ฑ
์ด ๊ธ์ ๋ํ ์ฌ๋ฌ๋ถ์ ์๊ฐ์ ๋ค๋ ค์ฃผ์ธ์
๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค
๋๊ธ์ ์์ฑํ๋ ค๋ฉด ๋จผ์ ๋ก๊ทธ์ธํด์ฃผ์ธ์.