7.2. 지침을 λ”°λ₯΄κΈ° μœ„ν•œ λ―Έμ„Έ μ‘°μ •

Tip

AWS ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°:HackTricks Training AWS Red Team Expert (ARTE)
GCP ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training GCP Red Team Expert (GRTE) Azure ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks μ§€μ›ν•˜κΈ°

Tip

이 μ„Ήμ…˜μ˜ λͺ©ν‘œλŠ” ν…μŠ€νŠΈ μƒμ„±λ§Œ ν•˜λŠ” 것이 μ•„λ‹ˆλΌ 지침을 λ”°λ₯΄λ„둝 이미 사전 ν›ˆλ ¨λœ λͺ¨λΈμ„ λ―Έμ„Έ μ‘°μ •ν•˜λŠ” 방법을 λ³΄μ—¬μ£ΌλŠ” κ²ƒμž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ±—λ΄‡μœΌλ‘œμ„œ μž‘μ—…μ— μ‘λ‹΅ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

데이터셋

LLM을 지침을 λ”°λ₯΄λ„둝 λ―Έμ„Έ μ‘°μ •ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ§€μΉ¨κ³Ό 응닡이 ν¬ν•¨λœ 데이터셋이 ν•„μš”ν•©λ‹ˆλ‹€. LLM을 지침을 λ”°λ₯΄λ„둝 ν›ˆλ ¨ν•˜λŠ” λ°λŠ” λ‹€μ–‘ν•œ ν˜•μ‹μ΄ μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄:

  • Apply Alpaca ν”„λ‘¬ν”„νŠΈ μŠ€νƒ€μΌ 예제:
Below is an instruction that describes a task. Write a response that appropriately completes the request.

### Instruction:
Calculate the area of a circle with a radius of 5 units.

### Response:
The area of a circle is calculated using the formula \( A = \pi r^2 \). Plugging in the radius of 5 units:

\( A = \pi (5)^2 = \pi \times 25 = 25\pi \) square units.
  • Phi-3 ν”„λ‘¬ν”„νŠΈ μŠ€νƒ€μΌ μ˜ˆμ‹œ:
<|User|>
Can you explain what gravity is in simple terms?

<|Assistant|>
Absolutely! Gravity is a force that pulls objects toward each other.

LLM을 μ΄λŸ¬ν•œ μ’…λ₯˜μ˜ 데이터 μ„ΈνŠΈλ‘œ ν›ˆλ ¨μ‹œν‚€λŠ” 것은 λ‹¨μˆœν•œ μ›μ‹œ ν…μŠ€νŠΈ λŒ€μ‹  LLM이 λ°›λŠ” μ§ˆλ¬Έμ— λŒ€ν•΄ ꡬ체적인 응닡을 μ œκ³΅ν•΄μ•Ό ν•œλ‹€λŠ” 것을 μ΄ν•΄ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€.

λ”°λΌμ„œ μš”μ²­κ³Ό 닡변이 ν¬ν•¨λœ 데이터 μ„ΈνŠΈλ‘œ μˆ˜ν–‰ν•΄μ•Ό ν•  첫 번째 μž‘μ—… 쀑 ν•˜λ‚˜λŠ” μ›ν•˜λŠ” ν”„λ‘¬ν”„νŠΈ ν˜•μ‹μœΌλ‘œ ν•΄λ‹Ή 데이터λ₯Ό λͺ¨λΈλ§ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄:

# Code from https://github.com/rasbt/LLMs-from-scratch/blob/main/ch07/01_main-chapter-code/ch07.ipynb
def format_input(entry):
instruction_text = (
f"Below is an instruction that describes a task. "
f"Write a response that appropriately completes the request."
f"\n\n### Instruction:\n{entry['instruction']}"
)

input_text = f"\n\n### Input:\n{entry['input']}" if entry["input"] else ""

return instruction_text + input_text

model_input = format_input(data[50])

desired_response = f"\n\n### Response:\n{data[50]['output']}"

print(model_input + desired_response)

그런 λ‹€μŒ, 항상 그렇듯이 데이터셋을 ν›ˆλ ¨, 검증 및 ν…ŒμŠ€νŠΈ μ„ΈνŠΈλ‘œ 뢄리해야 ν•©λ‹ˆλ‹€.

배치 및 데이터 λ‘œλ”

그런 λ‹€μŒ, ν›ˆλ ¨μ„ μœ„ν•΄ λͺ¨λ“  μž…λ ₯κ³Ό μ˜ˆμƒ 좜λ ₯을 λ°°μΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ ν•„μš”ν•œ 것은:

  • ν…μŠ€νŠΈλ₯Ό ν† ν°ν™”ν•©λ‹ˆλ‹€.
  • λͺ¨λ“  μƒ˜ν”Œμ„ λ™μΌν•œ 길이둜 νŒ¨λ”©ν•©λ‹ˆλ‹€(일반적으둜 κΈΈμ΄λŠ” LLM을 사전 ν›ˆλ ¨ν•˜λŠ” 데 μ‚¬μš©λœ μ»¨ν…μŠ€νŠΈ 길이만큼 ν½λ‹ˆλ‹€).
  • μ‚¬μš©μž μ •μ˜ 콜레이트 ν•¨μˆ˜μ—μ„œ μž…λ ₯을 1만큼 μ΄λ™μ‹œμΌœ μ˜ˆμƒ 토큰을 μƒμ„±ν•©λ‹ˆλ‹€.
  • ν›ˆλ ¨ μ†μ‹€μ—μ„œ μ œμ™Έν•˜κΈ° μœ„ν•΄ 일뢀 νŒ¨λ”© 토큰을 -100으둜 κ΅μ²΄ν•©λ‹ˆλ‹€: 첫 번째 endoftext 토큰 이후에 λͺ¨λ“  λ‹€λ₯Έ endoftext 토큰을 -100으둜 λŒ€μ²΄ν•©λ‹ˆλ‹€(μ™œλƒν•˜λ©΄ cross_entropy(...,ignore_index=-100)λ₯Ό μ‚¬μš©ν•˜λ©΄ -100인 νƒ€κ²Ÿμ„ λ¬΄μ‹œν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€).
  • [선택 사항] LLM이 닡변을 μƒμ„±ν•˜λŠ” λ°©λ²•λ§Œ λ°°μš°λ„λ‘ μ§ˆλ¬Έμ— μ†ν•˜λŠ” λͺ¨λ“  토큰을 -100으둜 λ§ˆμŠ€ν‚Ήν•©λ‹ˆλ‹€. Apply Alpaca μŠ€νƒ€μΌμ—μ„œλŠ” ### Response:κΉŒμ§€ λͺ¨λ“  것을 λ§ˆμŠ€ν‚Ήν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.

μ΄λ ‡κ²Œ μƒμ„±ν•œ ν›„, 각 데이터셋(ν›ˆλ ¨, 검증 및 ν…ŒμŠ€νŠΈ)을 μœ„ν•œ 데이터 λ‘œλ”λ₯Ό 생성할 μ‹œκ°„μž…λ‹ˆλ‹€.

사전 ν›ˆλ ¨λœ LLM λ‘œλ“œ 및 λ―Έμ„Έ μ‘°μ • 및 손싀 확인

사전 ν›ˆλ ¨λœ LLM을 λ‘œλ“œν•˜μ—¬ λ―Έμ„Έ μ‘°μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ΄λŠ” λ‹€λ₯Έ νŽ˜μ΄μ§€μ—μ„œ 이미 λ…Όμ˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 그런 λ‹€μŒ, 이전에 μ‚¬μš©λœ ν›ˆλ ¨ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ LLM을 λ―Έμ„Έ μ‘°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν›ˆλ ¨ μ€‘μ—λŠ” 에포크 λ™μ•ˆ ν›ˆλ ¨ 손싀과 검증 손싀이 μ–΄λ–»κ²Œ λ³€ν•˜λŠ”μ§€ ν™•μΈν•˜μ—¬ 손싀이 쀄어듀고 μžˆλŠ”μ§€, 과적합이 λ°œμƒν•˜κ³  μžˆλŠ”μ§€λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
과적합은 ν›ˆλ ¨ 손싀이 쀄어듀고 μžˆμ§€λ§Œ 검증 손싀이 쀄어듀지 μ•Šκ±°λ‚˜ 였히렀 증가할 λ•Œ λ°œμƒν•©λ‹ˆλ‹€. 이λ₯Ό ν”Όν•˜κΈ° μœ„ν•΄ κ°€μž₯ κ°„λ‹¨ν•œ 방법은 μ΄λŸ¬ν•œ 행동이 μ‹œμž‘λ˜λŠ” μ—ν¬ν¬μ—μ„œ ν›ˆλ ¨μ„ μ€‘λ‹¨ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

응닡 ν’ˆμ§ˆ

이것은 손싀 λ³€ν™”λ₯Ό 더 μ‹ λ’°ν•  수 μžˆλŠ” λΆ„λ₯˜ λ―Έμ„Έ 쑰정이 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ—, ν…ŒμŠ€νŠΈ μ„ΈνŠΈμ—μ„œ μ‘λ‹΅μ˜ ν’ˆμ§ˆμ„ ν™•μΈν•˜λŠ” 것도 μ€‘μš”ν•©λ‹ˆλ‹€. λ”°λΌμ„œ μƒμ„±λœ 응닡을 λͺ¨λ“  ν…ŒμŠ€νŠΈ μ„ΈνŠΈμ—μ„œ μˆ˜μ§‘ν•˜κ³  κ·Έ ν’ˆμ§ˆμ„ μˆ˜λ™μœΌλ‘œ ν™•μΈν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. 잘λͺ»λœ 닡변이 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€(LLM이 응닡 λ¬Έμž₯의 ν˜•μ‹κ³Ό ꡬ문을 μ˜¬λ°”λ₯΄κ²Œ 생성할 수 μžˆμ§€λ§Œ μ™„μ „νžˆ 잘λͺ»λœ 응닡을 μ œκ³΅ν•  수 μžˆλ‹€λŠ” 점에 μœ μ˜ν•˜μ‹­μ‹œμ˜€. 손싀 변동은 μ΄λŸ¬ν•œ 행동을 λ°˜μ˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€).
μƒμ„±λœ 응닡과 μ˜ˆμƒ 응닡을 λ‹€λ₯Έ LLM에 μ „λ‹¬ν•˜μ—¬ 응닡을 ν‰κ°€ν•˜λ„λ‘ μš”μ²­ν•˜λŠ” λ°©μ‹μœΌλ‘œ 이 κ²€ν† λ₯Ό μˆ˜ν–‰ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

응닡 ν’ˆμ§ˆμ„ κ²€μ¦ν•˜κΈ° μœ„ν•΄ μ‹€ν–‰ν•  λ‹€λ₯Έ ν…ŒμŠ€νŠΈ:

  1. λŒ€κ·œλͺ¨ 닀쀑 μž‘μ—… μ–Έμ–΄ 이해 (MMLU): MMLUλŠ” 인문학, κ³Όν•™ λ“± 57개 μ£Όμ œμ— 걸쳐 λͺ¨λΈμ˜ 지식과 문제 ν•΄κ²° λŠ₯λ ₯을 ν‰κ°€ν•©λ‹ˆλ‹€. λ‹€μ–‘ν•œ λ‚œμ΄λ„μ—μ„œ 이해도λ₯Ό ν‰κ°€ν•˜κΈ° μœ„ν•΄ 객관식 μ§ˆλ¬Έμ„ μ‚¬μš©ν•©λ‹ˆλ‹€.
  2. LMSYS Chatbot Arena: 이 ν”Œλž«νΌμ€ μ‚¬μš©μžκ°€ λ‹€μ–‘ν•œ μ±—λ΄‡μ˜ 응닡을 λ‚˜λž€νžˆ 비ꡐ할 수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€. μ‚¬μš©μžκ°€ ν”„λ‘¬ν”„νŠΈλ₯Ό μž…λ ₯ν•˜λ©΄ μ—¬λŸ¬ 챗봇이 응닡을 μƒμ„±ν•˜μ—¬ 직접 비ꡐ할 수 μžˆμŠ΅λ‹ˆλ‹€.
  3. AlpacaEval: AlpacaEval은 GPT-4와 같은 κ³ κΈ‰ LLM이 λ‹€μ–‘ν•œ ν”„λ‘¬ν”„νŠΈμ— λŒ€ν•œ λ‹€λ₯Έ λͺ¨λΈμ˜ 응닡을 ν‰κ°€ν•˜λŠ” μžλ™ν™”λœ 평가 ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€.
  4. 일반 μ–Έμ–΄ 이해 평가 (GLUE): GLUEλŠ” 감정 뢄석, ν…μŠ€νŠΈ ν•¨μ˜ 및 질문 응닡을 ν¬ν•¨ν•œ 아홉 κ°€μ§€ μžμ—°μ–΄ 이해 μž‘μ—…μ˜ λͺ¨μŒμž…λ‹ˆλ‹€.
  5. SuperGLUE: GLUEλ₯Ό 기반으둜 ν•˜μ—¬ SuperGLUEλŠ” ν˜„μž¬ λͺ¨λΈμ— λŒ€ν•΄ μ–΄λ €μš΄ μž‘μ—…μ„ ν¬ν•¨ν•©λ‹ˆλ‹€.
  6. λͺ¨λ°© κ²Œμž„ 벀치마크 μ΄ˆμ›” (BIG-bench): BIG-benchλŠ” μΆ”λ‘ , λ²ˆμ—­ 및 질문 응닡과 같은 μ˜μ—­μ—μ„œ λͺ¨λΈμ˜ λŠ₯λ ₯을 ν…ŒμŠ€νŠΈν•˜λŠ” 200개 μ΄μƒμ˜ μž‘μ—…μ„ ν¬ν•¨ν•˜λŠ” λŒ€κ·œλͺ¨ λ²€μΉ˜λ§ˆν¬μž…λ‹ˆλ‹€.
  7. μ–Έμ–΄ λͺ¨λΈμ˜ 전체적인 평가 (HELM): HELM은 μ •ν™•μ„±, 강건성 및 곡정성과 같은 λ‹€μ–‘ν•œ λ©”νŠΈλ¦­μ— 걸쳐 포괄적인 평가λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  8. OpenAI Evals: OpenAIμ—μ„œ μ œκ³΅ν•˜λŠ” μ˜€ν”ˆ μ†ŒμŠ€ 평가 ν”„λ ˆμž„μ›Œν¬λ‘œ, AI λͺ¨λΈμ„ μ‚¬μš©μž μ •μ˜ 및 ν‘œμ€€ν™”λœ μž‘μ—…μ—μ„œ ν…ŒμŠ€νŠΈν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  9. HumanEval: μ–Έμ–΄ λͺ¨λΈμ˜ μ½”λ“œ 생성 λŠ₯λ ₯을 ν‰κ°€ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” ν”„λ‘œκ·Έλž˜λ° 문제 λͺ¨μŒμž…λ‹ˆλ‹€.
  10. μŠ€νƒ ν¬λ“œ 질문 응닡 데이터셋 (SQuAD): SQuADλŠ” λͺ¨λΈμ΄ μ •ν™•ν•˜κ²Œ λ‹΅λ³€ν•˜κΈ° μœ„ν•΄ ν…μŠ€νŠΈλ₯Ό 이해해야 ν•˜λŠ” μœ„ν‚€ν”Όλ””μ•„ 기사에 λŒ€ν•œ 질문으둜 κ΅¬μ„±λ©λ‹ˆλ‹€.
  11. TriviaQA: λ°©λŒ€ν•œ μ–‘μ˜ ν€΄μ¦ˆ 질문과 λ‹΅λ³€, 증거 λ¬Έμ„œκ°€ ν¬ν•¨λœ λ°μ΄ν„°μ…‹μž…λ‹ˆλ‹€.

그리고 λ§Žμ€ λ§Žμ€ 더 μžˆμŠ΅λ‹ˆλ‹€.

μ§€μΉ¨ λ”°λ₯΄κΈ° λ―Έμ„Έ μ‘°μ • μ½”λ“œ

이 λ―Έμ„Έ 쑰정을 μˆ˜ν–‰ν•˜λŠ” μ½”λ“œμ˜ μ˜ˆλŠ” https://github.com/rasbt/LLMs-from-scratch/blob/main/ch07/01_main-chapter-code/gpt_instruction_finetuning.pyμ—μ„œ 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

μ°Έκ³  λ¬Έν—Œ

Tip

AWS ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°:HackTricks Training AWS Red Team Expert (ARTE)
GCP ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training GCP Red Team Expert (GRTE) Azure ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks μ§€μ›ν•˜κΈ°