목록으로
연구2026년 5월 8일 PM 05:05

HuggingFace 블로그, AMD MI300X·ROCm 단독 학습 의료 LLM 'MedQA' 공개… Qwen3-1.7B LoRA·MedMCQA 2,000샘플·5분 학습, CUDA 의존 0·환경변수 3줄

<p>HuggingFace 블로그가 AMD Instinct MI300X와 ROCm만으로 학습한 의료 객관식 Q&A 모델 'MedQA' 공개 사례를 게재했다. 환자에게 잘못된 답을 자신 있게 내놓는 의료 모델은 위험하다는 문제의식에서 출발했고, NVIDIA CUDA를 가정하는 오픈소스 의료 AI 흐름에 대한 도전을 표방한다. 모델은 의료 객관식 문항을 입력받아 정답 알파벳과 임상적 설명을 함께 반환하며, 데이터 로딩에서 어댑터 내보내기까지 전 과정이 단일 CUDA 의존성 없이 MI300X에서 실행됐다.</p>

<p>하드웨어로 사용된 AMD Instinct MI300X는 단일 디바이스에 HBM3 메모리 192GB를 탑재해 LLM 미세조정의 핵심 제약인 VRAM 여유가 큰 편이다. 이번 프로젝트는 192GB를 활용해 Qwen3-1.7B를 4비트·8비트 양자화 없이 fp16 그대로 LoRA 미세조정했다. 동시에 HuggingFace의 Transformers·PEFT·TRL·Accelerate 생태계가 ROCm에서 그대로 동작하는지 검증하는 데 무게가 실렸다.</p>

<p>CUDA에서 동작하던 학습 코드를 ROCm에서 그대로 돌리기 위해 추가한 변경은 환경 변수 세 개(ROCR_VISIBLE_DEVICES=0, HIP_VISIBLE_DEVICES=0, HSA_OVERRIDE_GFX_VERSION=9.4.2) 설정뿐이었다. 별도 코드 수정, 커스텀 커널, CUDA 호환 셰임은 모두 불필요했다는 설명이다. 다만 양자화 라이브러리 bitsandbytes는 ROCm 빌드가 없어 양자화 자체를 사용하지 않는 방향으로 설계됐다.</p>

<p>데이터셋은 인도 의대 입학시험(AIIMS, USMLE 스타일) 기반 대규모 객관식 문항 데이터셋 MedMCQA를 사용했다. 각 샘플은 임상 질문, 4지선다(A~D) 선택지, 정답 인덱스, 그리고 선택적 자유 서술 해설(exp 필드)로 구성된다. 빠른 미세조정 가능성을 보이기 위해 의도적으로 작은 슬라이스인 2,000개 학습 샘플만 사용했고, MI300X에서 학습은 약 5분이 걸렸다.</p>

<p>베이스 모델은 알리바바의 소형 언어모델 Qwen/Qwen3-1.7B로, 1.7B 파라미터 규모로 미세조정 비용이 낮으면서 임상 추론 텍스트를 생성할 수 있는 수준이라는 평가다. PEFT 라이브러리의 LoRA를 적용해 어텐션 레이어의 q_proj, v_proj에만 학습 가능한 저랭크 분해 행렬을 주입하고 베이스 가중치는 동결했다. r=8, lora_alpha=16, lora_dropout=0.05 구성으로 학습 가능한 파라미터는 2,228,224개로, 전체 1,543,901,184개의 0.1443%에 해당한다.</p>

<p>학습 설정은 num_train_epochs=2, per_device_train_batch_size=4, gradient_accumulation_steps=4로 유효 배치 16, learning_rate=2e-4, fp16=True, bf16=False, gradient_checkpointing=True, optim=adamw_torch, warmup_ratio=0.05, lr_scheduler_type=cosine로 정해졌다. 초기 실험에서 bfloat16 사용 시 NaN 손실이 발생해 fp16으로 전환하자 해결됐다는 점이 명시됐다. gradient_checkpointing은 MI300X의 192GB VRAM 환경에서는 필수가 아니지만 더 작은 GPU로의 재현성을 위해 켜뒀다.</p>

<p>학습 후 ./outputs 디렉터리에는 멀티 GB 모델 체크포인트 대신 LoRA 어댑터 가중치 수 MB 파일만 저장된다. 추론 시점에는 베이스 모델을 fp16으로 로드하고 PEFT의 PeftModel.from_pretrained로 어댑터를 붙인 뒤 그리디 디코딩(do_sample=False)에 repetition_penalty=1.1을 적용해 최대 200 토큰까지 생성한다. 사례로 공개된 고혈압 응급 1차 치료 문항에서는 IV labetalol 또는 IV nitroprusside를 선택하고, 경구·설하 약제는 응급 혈압 강하에 너무 느리다는 임상적 근거까지 제시했다.</p>

<p>미세조정된 어댑터는 HuggingFace Hub에 HK2184/medqa-qwen3-lora로 공개돼 별도 클론 없이 PeftModel로 즉시 로드해 사용할 수 있고, merge_and_unload()로 베이스 가중치에 병합도 가능하다. 보고된 주요 트러블슈팅은 bfloat16 혼합정밀에서 NaN 발생 시 fp16 전환으로 해결, ROCm 환경 변수 미설정 시 GPU 미인식 시 세 환경 변수로 해결, bitsandbytes ROCm 빌드 부재 시 양자화 사용 자체를 포기하는 방식으로 우회한 사례 등이다.</p>

AI인사이트 편집팀

이 기사는 AI 기술을 활용해 작성되었으며, 편집팀이 검수했습니다.

관련 기사