YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

Writing AI (온점)

κ΅­μ–΄ ꡐ과 μ„œμˆ ν˜• λ‹΅μ•ˆμ„ μ±„μ ν•˜κ³  λ§žμΆ€ν˜• ν”Όλ“œλ°±μ„ μƒμ„±ν•˜λŠ” LoRA μ–΄λŒ‘ν„°μž…λ‹ˆλ‹€.
Meta-Llama-3.1-8B-bnb-4bitλ₯Ό QLoRA(Unsloth)둜 νŒŒμΈνŠœλ‹ν–ˆμŠ΅λ‹ˆλ‹€.

ν•™μŠ΅ 데이터

  • AI Hub μ„œμˆ ν˜• 채점 데이터 및 자체 μˆ˜μ§‘ 데이터 (1점 ~ 4점 κ· ν˜•)
  • μ§€μ‹œλ¬Έ + 학생 λ‹΅μ•ˆ + ν”Όλ“œλ°± 및 μ΅œμ’… 점수 ν˜•μ‹μœΌλ‘œ 가곡
  • λ¬΄μ˜λ―Έν•œ 단어 반볡, κΈ€μž 수 늘리기 λ“± '꼼수(κ°€μ§œ 1점)' 필터링 적용 및 700자 길이 λ°±μ‹  적용 (v2)

μ„±λŠ₯

μ§€ν‘œ 수치 λΉ„κ³ 
인접 정확도 (Β±1점) 87.5% 인간 채점관 μˆ˜μ€€μ˜ 싀무 합격선
1점 적쀑λ₯  86.0%
Macro F1-Score 0.5348

ν•™μŠ΅ μ„€μ •

ν•­λͺ© κ°’
방식 QLoRA (4-bit NF4)
LoRA rank 32
LoRA alpha 32
Epochs 3
Learning rate 3e-5
Optimizer adamw_8bit
Max length 1536
Framework unsloth / trl SFTTrainer

μ‚¬μš© 방법

  import torch
  import re
  from unsloth import FastLanguageModel
  
  ADAPTER_PATH = "Onjeom/essay_scoring"
  
  tokenizer = FastLanguageModel.from_pretrained(ADAPTER_PATH)[1]
  model, _ = FastLanguageModel.from_pretrained(
      model_name=ADAPTER_PATH,
      max_seq_length=1536,
      load_in_4bit=True,
      device_map="cuda"
  )
  FastLanguageModel.for_inference(model)
  
  RELAXED_INSTRUCTION = """μ£Όμ–΄μ§„ μ§€μ‹œλ¬Έκ³Ό ν•™μƒμ˜ λ‹΅μ•ˆμ„ λΆ„μ„ν•˜μ—¬, λΆ€μ‘±ν•œ 점과 κ°œμ„  λ°©ν–₯을 ν¬ν•¨ν•œ ν”Όλ“œλ°±μ„ μž‘μ„±ν•˜κ³  맨 λ§ˆμ§€λ§‰μ— 1점뢀터 4점 μ‚¬μ΄μ˜ μ΅œμ’… 점수λ₯Ό λΆ€μ—¬ν•˜μ‹œμ˜€.
  
  [μœ μ—°ν•˜κ³  κ΄€λŒ€ν•œ 채점 κΈ°μ€€]
  - 4점: μ§€μ‹œλ¬Έμ˜ 핡심 μš”κ΅¬μ‚¬ν•­μ„ 잘 νŒŒμ•…ν•˜μ˜€κ³  μ „λ°˜μ μΈ 흐름이 μš°μˆ˜ν•œ λ‹΅μ•ˆ (μ‚¬μ†Œν•œ 결함은 λ„ˆκ·ΈλŸ½κ²Œ 만점 처리)
  - 3점: μ§€μ‹œλ¬Έμ€ μ΄ν•΄ν–ˆμœΌλ‚˜ κ·Όκ±°κ°€ λ‹€μ†Œ ν‰μ΄ν•˜κ±°λ‚˜ λ…Όλ¦¬μ˜ κΉŠμ΄κ°€ μ•„μ‰¬μš΄ 일반적인 λ‹΅μ•ˆ
  - 2점: μ§€μ‹œλ¬Έμ˜ ν‚€μ›Œλ“œλ§Œ 겨우 λ‚˜μ—΄ν–ˆκ±°λ‚˜ μ£Όμž₯의 κ·Όκ±°κ°€ μ‹¬κ°ν•˜κ²Œ λΆ€μ‘±ν•œ λ‹΅μ•ˆ
  - 1점 (μ΅œν•˜μ ): 같은 말을 λ¬΄μ˜λ―Έν•˜κ²Œ λ°˜λ³΅ν•˜κ±°λ‚˜ κΌΌμˆ˜κ°€ λͺ…λ°±ν•œ λ‹΅μ•ˆ"""
  
  ALPACA_PROMPT = "Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.\n\n### Instruction:\n{}\n\n### Input:\n{}\n\n### Response:\n{}"
  
  student_answer = "선인μž₯은 쀄기에 물을 μ €μž₯ν•΄μ„œ μ‚¬λ§‰μ—μ„œ μ‚΄ 수 μžˆλ‹€."
  safe_input = student_answer[:700] # OOM λ°©μ§€μš© 700자 μ œν•œ
  
  prompt = ALPACA_PROMPT.format(RELAXED_INSTRUCTION, safe_input, "")
  inputs = tokenizer([prompt], return_tensors="pt").to("cuda")
  
  with torch.no_grad():
      outputs = model.generate(
          **inputs,
          max_new_tokens=512,
          temperature=0.1,
          top_p=0.9,
          pad_token_id=tokenizer.eos_token_id
      )
  
  response = tokenizer.decode(outputs[0], skip_special_tokens=True).split("### Response:\n")[-1].strip()
  print(response)

ν”„λ‘¬ν”„νŠΈ ν˜•μ‹

μ§€μ‹œλ¬Έ: μ£Όμ–΄μ§„ μ§€μ‹œλ¬Έκ³Ό ν•™μƒμ˜ λ‹΅μ•ˆμ„ λΆ„μ„ν•˜μ—¬... [μœ μ—°ν•˜κ³  κ΄€λŒ€ν•œ 채점 κΈ°μ€€] ...

μž…λ ₯:

{학생 λ‹΅μ•ˆ ν…μŠ€νŠΈ - ν•œκ΅­μ–΄ 토큰 폭발 λ°©μ§€λ₯Ό μœ„ν•΄ 700자 μ œν•œ ꢌμž₯}

좜λ ₯:

{κ°œμ„  λ°©ν–₯ 및 ν”Όλ“œλ°± ν…μŠ€νŠΈ}

[μ΅œμ’… 점수: 4]

API ν…ŒμŠ€νŠΈ 방법

  1. μ„œλ²„ μ‹€ν–‰
cd onjeom/api
pip install -r requirements.txt
cp .env.example .env

# HuggingFace 둜그인 (졜초 1회)
huggingface-cli login

# λͺ¨λΈ 포함 정상 μ‹€ν–‰
uvicorn app.main:app --reload

# λΉ λ₯Έ μž¬μ‹œμž‘ (λΌμš°ν„°/μŠ€ν‚€λ§ˆ μˆ˜μ • μ‹œ, λͺ¨λΈ λ‘œλ”© μƒλž΅)
SKIP_MODEL_LOAD=1 uvicorn app.main:app --reload

처음 μ‹€ν–‰ μ‹œ λͺ¨λΈ μžλ™ λ‹€μš΄λ‘œλ“œ (μ•½ 5~10λΆ„ μ†Œμš”).

βœ… 채점 μ—”μ§„ μ€€λΉ„ μ™„λ£Œ! λ©”μ‹œμ§€κ°€ 뜨면 μ€€λΉ„λœ κ±°μ˜ˆμš”.
  1. Swagger UI ν…ŒμŠ€νŠΈ

    λΈŒλΌμš°μ €μ—μ„œ http://localhost:8000/docs 접속

    ν…ŒμŠ€νŠΈν•  μ—”λ“œν¬μΈνŠΈ 클릭

    Try it out λ²„νŠΌ 클릭

    μ˜ˆμ‹œ 데이터 λΆ™μ—¬λ„£κ³  Execute 클릭

  2. μ£Όμš” μ—”λ“œν¬μΈνŠΈ μ˜ˆμ‹œ

μ„œμˆ ν˜• μžλ™ 채점 POST /api/v1/score

  "content": "선인μž₯은 쀄기에 물을 μ €μž₯ν•΄μ„œ μ‚¬λ§‰μ—μ„œ μ‚΄ 수 μžˆλ‹€."

AI νŠœν„° 질문 POST /api/tutor/ask

  "question": "좔둠적 λ…ν•΄λž€ λ¬΄μ—‡μΈκ°€μš”?",
  "context": null

μš©μ–΄ μ„€λͺ… POST /api/tutor/explain

  "term": "역섀법",
  "context": "κΈ€μ“΄μ΄λŠ” 역섀법을 μ‚¬μš©ν•˜μ—¬ 주제λ₯Ό κ°•μ‘°ν–ˆλ‹€."

컀리큘럼 생성 POST /api/curriculum/generate

  "theta": -0.5,
  "daily_goal": 10,
  "weak_areas": ["좔둠적 이해", "λΉ„νŒμ  독해"]

ν—¬μŠ€ 체크 GET /health β†’ {"status": "running"}

νŒ€μ› μ–΄λŒ‘ν„° λ‹€μš΄λ‘œλ“œ

huggingface-cli download Onjeom/essay_scoring --local-dir ./models/essay_scoring
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support