HuggingFace 모델 사용하는 방법

쪙이·2026년 7월 8일

인공지능

목록 보기
54/54

📢 HuggingFace 에 업로드 된 모델 사용하는 python code 를 리뷰한 페이지입니다.

1. import library

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

2. model 불러오기

# Load tokenizer and model
model_name = "snuh/hari-q3-8b"

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto"
)

tokenizer = AutoTokenizer.from_pretrained(model_name)
  • AutoModelForCausalLM: LLM 모델 불러오는 클래스. CausalLM = 다음 단어를 순차적으로 예측하는 방식의 언어 모델
    • torch_dtype = "auto": 모델에 저장된 원본 정밀도(보통 BF16)를 자동으로 감지해서 그대로 사용
    • device_map = "auto": GPU가 있으면 GPU에, 없으면 CPU에 자동으로 모델 올림
  • AutoTokenizer: 모델이 사용하는 토크나이저 불러옴

3. prompt 작성

prompt = '''
### Instruction:
당신은 임상 지식을 갖춘 유능하고 신뢰할 수 있는 한국어 기반 의료 어시스턴트입니다.
사용자의 질문에 대해 정확하고 신중한 임상 추론을 바탕으로 진단 가능성을 제시해 주세요.
반드시 환자의 연령, 증상, 검사 결과, 통증 부위 등 모든 단서를 종합적으로 고려하여 추론 과정과 진단명을 제시해야 합니다.
의학적으로 정확한 용어를 사용하되, 필요하다면 일반인이 이해하기 쉬운 용어도 병행해 설명해 주세요.

### Question:Z
60세 남성이 복통과 발열을 호소하며 내원하였습니다.
혈액 검사 결과 백혈구 수치가 상승했고, 우측 하복부 압통이 확인되었습니다.
가장 가능성이 높은 진단명은 무엇인가요?
'''.strip()

messages = [
    {"role": "user", "content": prompt}
]

4. 토큰화

# 토큰화를 위한 text 준비
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True,
    enable_thinking=True
)

# 토큰화 실행
# pt = PyTorch
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
  • apply_chat_template: 메세지를 모델이 학습할 때 사용되는 형식의 텍스트로 변환
    • tokenize=False: 아직 토큰으로 바꾸지 않고 문자열 형태로만 변환
    • add_generation_prompt=True: 이제 모델이 답변 시작해야 한다는 신호를 문장 끝에 추가
    • enable_thinking=True: Qwen3 의 생각하는 모드 활성화해서 모델이 답변 전에 내부적으로 추론 과정 거치도록 유도

5. 답변 생성

# 답변 생성
generated_ids = model.generate(
    **model_inputs,
    max_new_tokens=4096
)

# 생성된 답변만 추출
generated_ids = [
    output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]

# batch_decode: 토큰을 텍스트로 변환 (토큰화 반대 과정)
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)
  • generate: 실제로 답변 생성하는 함수
    • max_new_tokens=4096: 최대 4096 토큰까지 생성 허용 (너무 길게 답하지 않도록 제한하는 안전장치)
  • local 에서 돌려보니 model.generate 로 답변 생성하는 부분이 263분이나 걸렸다 .. 거진 4시간 반 ........... GPU 서버가 필요한 이유를 알겠습니당 ..
std
### 진단 추론 및 가능성이 높은 진단명

#### **1. 증상 및 검사 결과 종합 분석**
- **연령**: 60세 남성. 고령 환자에서 **복부 감염** 또는 **장기 염증**이 발생할 경우 증상이 비특이적일 수 있음.
- **주요 증상**:  
  - **복통**: 우측 하복부 압통(특징적 위치).  
  - **발열**: 감염성 염증 반응을 시사.  
- **혈액 검사**: **백혈구 수치 상승** → 감염 또는 염증 가능성.  
- **신체 검사**: **우측 하복부 압통** → **맹장염**의 전형적 징후.

#### **2. 임상적 가능성 및 차별 진단**
- **가장 가능성 높은 진단**: **맹장염 (Appendicitis)**  
  - **근거**:  
    1. **우측 하복부 압통**은 맹장염의 전형적 위치.  
    2. **발열**과 **백혈구 증가**는 감염성 염증 반응과 일치.  
    3. 고령 환자에서도 맹장염은 발생 가능 (증상이 비특이적일 수 있음).  
  - **주의 사항**: 고령 환자의 경우 **증상이 약화되거나 확산**될 수 있어 진단이 어려울 수 있음.

- **차별 진단**:  
  1. **결장 폐색/염증 (예: 직장염, 대장염)**:  
     - 일반적으로 **좌측 하복부**에 통증이 나타나며, **혈변**이나 **변비** 동반 가능.  
  2. **신장 결석**:  
     - **측복부 통증**과 **혈뇨**가 동반되며, **백혈구 증가**보다 **요로 검사 이상**이 더 중요.  
  3. **위장염/위장관염**:  
     - **전복통** 또는 **상복부 통증**이 주로 나타나며, **설사**나 **구토** 동반 가능.  
  4. **간염/담낭염**:  
     - **우상복부 통증**이 주 증상이며, **황달**이나 **담도 검사 이상**이 동반될 수 있음.

#### **3. 임상적 판단 기준**
- **맹장염**은 **우측 하복부 압통**, **발열**, **백혈구 증가**가 **동반될 경우** 가장 높은 가능성을 가짐.  
- **고령 환자**의 경우, **증상이 약화되거나 확산**될 수 있으므로 **초음파** 또는 **CT** 검사가 추가적으로 필요할 수 있음.  
- **즉시 치료**가 필요한 **급성 맹장염**은 **맹장 절제술**이 표준 치료법임.

---

### **최종 진단명**
**1. 맹장염 (Acute Appendicitis)**  
- **설명**: 맹장이 염증을 일으켜 발생하는 급성 감염 질환. 고령 환자에서도 발생 가능하며, **우측 하복부 통증**, **발열**, **백혈구 증가**가 주요 증상.  
- **주의**: 증상이 약화되거나 확산될 수 있으므로 **영상 검사** (초음파/CT)로 확진 필요.

**2. 차별 진단**:  
- **결장염**, **신장 결석**, **위장염** 등은 증상 위치 및 동반 증상에 따라 구분 가능.

0개의 댓글