Austin9's picture
Update README.md
39abb09 verified
metadata
base_model: unsloth/gemma-2-9b-it-bnb-4bit
tags:
  - text-generation-inference
  - transformers
  - unsloth
  - gemma2
  - trl
license: apache-2.0
language:
  - en

base_model: unsloth/gemma-2-2b-it tags: - text-generation-inference - transformers - unsloth - gemma2 - trl license: openrail language: - en

Gemma2 ν•œκ΅­μ–΄ μ „μš© μ–΄λŒ‘ν„° (Gemma2 Korean Adapter)

λ³Έ λ ˆν¬μ§€ν† λ¦¬λŠ” unsloth/gemma-2-9b-it-bnb-4bit λͺ¨λΈμ„ 기반으둜, ν•œκ΅­μ–΄ 질의 λΆ„λ₯˜ 및 검색 쿼리 μž¬μž‘μ„±μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•œ μ–΄λŒ‘ν„°(Adapter) μ˜ˆμ‹œμž…λ‹ˆλ‹€.
비상업적 μš©λ„λ‘œ 배포되며, 상업적 μ‚¬μš©μ€ μ œν•œλ©λ‹ˆλ‹€. λ³Έ λͺ¨λΈ 및 μ–΄λŒ‘ν„°μ— λŒ€ν•œ μ €μž‘κΆŒμ€ 원 κ°œλ°œμžμ—κ²Œ 있으며, 무단 μ „μž¬ 및 λ°°ν¬λŠ” κΈˆμ§€λ©λ‹ˆλ‹€.


μ£Όμš” κΈ°λŠ₯

  1. 질의 λΆ„λ₯˜(Query Classification)

    • μ‚¬μš©μžμ˜ μ§ˆμ˜κ°€ 인사, 농담, κ²‰μΉ˜λ ˆ λ“±μ˜ μ‹€μ œ 검색이 λΆˆν•„μš”ν•œ 경우, {"search": ""}(빈 λ¬Έμžμ—΄) ν˜•νƒœλ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€.
    • 즉, 검색이 μ „ν˜€ ν•„μš”ν•˜μ§€ μ•Šμ€ 상황을 μžλ™μœΌλ‘œ λΆ„λ₯˜ν•˜μ—¬ 쿼리λ₯Ό μƒμ„±ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  2. 검색 쿼리 μž‘μ„±(Search Query Rewriting)

    • μ‹€μ œ 검색이 ν•„μš”ν•œ 질문의 경우, **κ³Όκ±° λŒ€ν™”(Context)**λ₯Ό κ³ λ €ν•˜μ—¬ λΆˆμ™„μ „ν•œ 쿼리λ₯Ό λ³΄μ™„ν•˜κ±°λ‚˜, λΆˆν•„μš”ν•œ 뢀뢄을 μ œκ±°ν•΄ μ΅œμ ν™”λœ 검색어λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
    • μ΅œμ’… 좜λ ₯은 JSON ν˜•μ‹μœΌλ‘œ {"search": "<검색 쿼리>"} ν˜•νƒœλ₯Ό λ”°λ¦…λ‹ˆλ‹€.

ν•™μŠ΅ 데이터 ꡬ성

  • λŒ€ν™”(Context): μ‚¬μš©μžμ™€μ˜ κ³Όκ±° λŒ€ν™” 기둝을 κ°œν–‰(\n)으둜 κ΅¬λΆ„ν•˜μ—¬ 이어뢙인 ν…μŠ€νŠΈ
  • μ§€μ‹œλ¬Έ(Instruction): λͺ¨λΈμ—κ²Œ μ–΄λ–€ μž‘μ—…μ„ μˆ˜ν–‰ν•΄μ•Ό ν•˜λŠ”μ§€ μ•Œλ €μ£ΌλŠ” ν…μŠ€νŠΈ
  • μž…λ ₯(Input): μ‚¬μš©μžκ°€ λ§ˆμ§€λ§‰μœΌλ‘œ μž…λ ₯ν•œ μ‹€μ œ 질의
  • 응닡(Response): μ΅œμ’… JSON ν˜•μ‹({"search": "<검색어>"})으둜 μž‘μ„±λœ 검색 쿼리 κ²°κ³Ό

λŒ€ν™”μ™€ μš”μ²­μ„ ν•˜λ‚˜μ˜ ν…μŠ€νŠΈλ‘œ 합쳐 ν•™μŠ΅ν•  수 μžˆλ„λ‘, Hugging Face Dataset을 ν™œμš©ν•˜μ—¬ μ•„λž˜μ™€ 같은 ν…œν”Œλ¦Ώμ— 맞좰 λ³€ν™˜ν•˜μ˜€μŠ΅λ‹ˆλ‹€.


ν”„λ‘¬ν”„νŠΈ ν…œν”Œλ¦Ώ(μ˜ˆμ‹œ)

λ³Έ μ–΄λŒ‘ν„°λŠ” μ•„λž˜μ™€ 같은 ν…œν”Œλ¦Ώ ꡬ쑰λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. λͺ¨λΈμ— μž…λ ₯될 μ΅œμ’… λ¬Έμžμ—΄μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

### Context:
{conversation}

### Instruction:
λ‹€μŒμ€ λŒ€ν™” 기둝(Context)와 μ‚¬μš©μžμ˜ 질문(Input)μž…λ‹ˆλ‹€. μ‚¬μš©μžμ˜ μ§ˆλ¬Έμ— 닡을 μ œκ³΅ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ 단일 λ¬Έμžμ—΄ 검색 쿼리λ₯Ό μƒμ„±ν•˜μ„Έμš”. λŒ€ν™” 기둝을 κ³ λ €ν•˜μ—¬ 검색 쿼리λ₯Ό μƒμ„±ν•˜μ„Έμš”. 검색이 ν•„μš”ν•˜μ§€ μ•Šκ±°λ‚˜ 쿼리가 λΆˆν•„μš”ν•œ 경우(μΈμ‚¬λ‚˜, κ²‰μΉ˜λ ˆ, 농담) 빈 λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•˜μ„Έμš”.

μ΅œμ’… 좜λ ₯ ν˜•μ‹μ€ {'search': '<검색 쿼리>'}μž…λ‹ˆλ‹€.

### Input:
{input}

### Response:
{response}
  • {conversation}: κ³Όκ±° λŒ€ν™” νžˆμŠ€ν† λ¦¬λ₯Ό κ°œν–‰(\n)으둜 κ΅¬λΆ„ν•˜μ—¬ 이어뢙인 λ¬Έμžμ—΄
  • {instruction}: μ‚¬μš©μž μš”μ²­μ— λŒ€ν•œ 지침
  • {input}: μ΅œμ’… μ‚¬μš©μž 질의
  • {response}: JSON ν˜•μ‹(예: {"search": "<검색어>"})으둜 μž‘μ„±λœ κ²°κ³Ό

λͺ¨λΈμ˜ EOS 토큰(예: tokenizer.eos_token)을 μ΄μš©ν•΄ λ¬Έμž₯ λ‹¨μœ„λ₯Ό κ΅¬λΆ„ν•©λ‹ˆλ‹€.


μ‚¬μš© μ˜ˆμ‹œ

  1. 인사, 농담, κ²‰μΉ˜λ ˆ 질문

    • Input: β€œμ•ˆλ…•? 잘 지내?”
    • λΆ„λ₯˜ κ²°κ³Ό: 검색이 λΆˆν•„μš”ν•˜λ‹€κ³  νŒλ‹¨ β†’ {"search": ""}
  2. 검색 ν•„μš”ν•œ 질문

    • Context: 이전 λŒ€ν™”μ—μ„œ β€œλ‰΄μš• 맛집” 이야기λ₯Ό ν•˜κ³  μžˆμ—ˆμŒ
    • Input: β€œκ·ΈλŸΌ λ‰΄μš•μ—μ„œ 제일 인기 μžˆλŠ” 햄버거 κ°€κ²Œ μ°Ύμ•„μ€˜β€
    • λͺ¨λΈ 응닡: {"search": "λ‰΄μš• 인기 햄버거 κ°€κ²Œ"}
    • κ³Όκ±° λŒ€ν™”λ₯Ό κ³ λ €ν•˜μ—¬ ν‚€μ›Œλ“œλ₯Ό μΆ”μΆœ 및 μž¬μž‘μ„±

λͺ¨λΈ ꡬ쑰


μ‚¬μš© 방법

  1. 데이터셋 생성

    • merged_dataset.json ν˜•νƒœλ‘œ λŒ€ν™”μ™€ μ§ˆμ˜κ°€ ν¬ν•¨λœ 원본 데이터λ₯Ό μ€€λΉ„ν•©λ‹ˆλ‹€.
    • μœ„ μ˜ˆμ‹œ 슀크립트처럼, {"search": "<검색어>"} ν˜•νƒœμ˜ μ΅œμ’… Responseλ₯Ό μƒμ„±ν•˜λ„λ‘ μ „μ²˜λ¦¬(토큰 수 μ œν•œ, λΆˆν•„μš”ν•œ λŒ€ν™” 제거 λ“±)λ₯Ό κ±°μΉ©λ‹ˆλ‹€.
  2. 포맷 λ³€ν™˜

    • ν…œν”Œλ¦Ώ(custom_prompt)을 μ‚¬μš©ν•΄ <conversation>, <instruction>, <input>, <response>λ₯Ό ν•˜λ‚˜μ˜ λ¬Έμžμ—΄λ‘œ ν•©μΉ©λ‹ˆλ‹€.
    • Hugging Face Dataset 객체에 맡핑(map)ν•˜μ—¬ text μ»¬λŸΌμ„ μƒμ„±ν•©λ‹ˆλ‹€.
  3. 데이터 λΆ„ν• 

    • μ˜ˆμ‹œ μ½”λ“œμ—μ„œμ²˜λŸΌ train/val 데이터λ₯Ό λΆ„λ¦¬ν•œ ν›„, μ›ν•˜λŠ” λ―Έμ„Έμ‘°μ • λ°©λ²•μœΌλ‘œ ν•™μŠ΅ν•©λ‹ˆλ‹€.
  4. μΆ”λ‘ (Inference)

    • ν•™μŠ΅λœ λͺ¨λΈ ν˜Ήμ€ μ–΄λŒ‘ν„°λ₯Ό λ‘œλ“œν•œ λ’€, μ‚¬μš©μž μž…λ ₯을 λ°›μ•„ ν…œν”Œλ¦Ώμ— 맞좰 λͺ¨λΈμ— μ „λ‹¬ν•©λ‹ˆλ‹€.
    • λͺ¨λΈμ˜ μ΅œμ’… 좜λ ₯이 {"search": "<검색어>"} ν˜•νƒœμΈμ§€ ν™•μΈν•©λ‹ˆλ‹€.
    • search ν•„λ“œκ°€ 빈 λ¬Έμžμ—΄("")이라면 검색이 ν•„μš”ν•˜μ§€ μ•ŠμŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€.

λΌμ΄μ„ μŠ€

  • λ³Έ μ–΄λŒ‘ν„°λŠ” 비상업적 μš©λ„λ‘œλ§Œ μ‚¬μš© κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • 재배포 및 νŒŒμƒ ν”„λ‘œμ νŠΈ 생성 μ‹œ, λ°˜λ“œμ‹œ 비상업적 λͺ©μ μ΄μ–΄μ•Ό ν•˜λ©°, 2μ°¨ μ°½μž‘ μ‹œ μ›μž‘μž ν‘œκΈ°λ₯Ό μ€€μˆ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • 상업적 이용이 ν•„μš”ν•œ 경우 λ³„λ„μ˜ ν˜‘μ˜λ₯Ό 톡해 ν—ˆκ°€λ₯Ό λ°›μ•„μ•Ό ν•©λ‹ˆλ‹€.