*Google MedGemma 4B 및 27B를 사용하여 의료 AI를 구축하는 방법: 완벽 설치 가이드
Build Medical AI with Google’s MedGemma 4B & 27B: A Complete Installation Guide
Google MedGemma 4B 및 27B를 사용하여 의료 AI를 구축하는 방법: 완벽 설치 가이드
이 글은 의료 분야에 특화된 인공지능 모델인 Google의 MedGemma를 설치하고 활용하는 방법을 상세히 안내하는 튜토리얼입니다. 핵심 내용은 시각적 진단이 가능한 4B 멀티모달 모델과 정교한 의학적 추론에 최적화된 27B 텍스트 전용 모델의 특징을 설명하고, 이를 구동하기 위한 하드웨어 요구사항과 환경 설정 과정을 포함합니다. 특히 클라우드 컴퓨팅 플랫폼인 NodeShift를 활용하여 GPU 서버를 구축하고 주피터 노트북을 통해 실제 모델을 실행하는 단계를 체계적으로 제시합니다. 궁극적으로 이 자료는 개발자들이 오픈 소스 의료 AI 기술을 활용하여 진단 보조 장치나 의료 요약 도구와 같은 혁신적인 솔루션을 직접 구현할 수 있도록 돕는 데 목적이 있습니다.
새로운 AI 혁신이 거의 매일 일어나고 있지만, 의료 분야 AI는 여전히 기술 혁신가들의 손길이 닿지 않는 분야입니다. 그러나 구글은 최근 구글 I/O 커넥트에서 발표한 최신 MedGemma 모델을 통해 의료 분야에 혁신을 일으키고자 하는 첫걸음을 내디뎠습니다. 이 모델들은 지능형 의료 애플리케이션 구축을 위한 최첨단 도구로 주목받고 있습니다. MedGemma는 강력한 Gemma 3 아키텍처를 기반으로 하는 모델 제품군으로, 복잡한 의료 텍스트 및 이미지 데이터를 처리하도록 정밀하게 조정되었습니다. MedGemma 4B 변형은 다중 모달 모델로, 익명 처리된 흉부 X선, 피부과, 안과, 조직병리학 이미지로 사전 학습된 SigLIP 이미지 인코더와 유사하게 풍부한 의료 데이터 세트로 학습된 강력한 언어 모델을 결합했습니다.
이 모델들은 진단 보조 도구, 방사선 보고서 생성기, 피부과 진료 우선순위 결정 도구 등을 개발하려는 개발자에게 이상적입니다. MedGemma 4B는 빠른 시작을 위한 강력한 명령어 최적화 버전과 심층적인 실험을 위한 사전 학습 옵션을 제공합니다. 한편, MedGemma 27B 모델은 텍스트 기반 의학 추론에 특화되어 있어 임상 요약, 의사 결정 지원, 복잡한 의학 질문에 대한 정확한 답변 제공과 같은 작업에 적합합니다. 추론 효율성에 최적화되어 다양한 의료 벤치마크에서 뛰어난 성능을 즉시 제공합니다.
의학 연구자, 헬스케어 AI 스타트업 또는 도메인별 모델 개발에 관심 있는 머신러닝 엔지니어라면 MedGemma는 혁신을 위한 탄탄한 기반을 제공합니다. 이 가이드에서는 MedGemma의 두 가지 버전을 로컬 환경 또는 GPU 환경에서 몇 분 만에 설치하고 실행하는 방법을 단계별로 자세히 안내합니다.
필수 조건
이 모델을 실행하기 위한 최소 시스템 요구 사항은 다음과 같습니다.
GPU: RTX4090 / RTXA6000 / A100
저장 용량: 50GB (권장)
VRAM: 16GB(4B); 32GB(27B)
Google MedGemma 4B 및 27B 설치 및 실행 단계별 안내
이 튜토리얼에서는 NodeShift의 GPU 기반 가상 머신을 사용합니다. NodeShift는 GDPR, SOC2 및 ISO27001 요구 사항을 충족하는 규모로 매우 저렴한 비용으로 고성능 컴퓨팅 환경을 제공합니다. 또한 직관적이고 사용자 친화적인 인터페이스를 제공하여 초보자도 클라우드 배포를 쉽게 시작할 수 있습니다. 하지만 원하는 클라우드 제공업체를 사용하셔도 되며, 나머지 튜토리얼 단계는 동일하게 진행하시면 됩니다.
1단계: NodeShift 계정 설정
app.nodeshift.com 에 접속하여 기본 정보를 입력해 계정을 생성하거나, Google/GitHub 계정을 사용하여 가입을 진행하세요.
이미 계정이 있으시면 대시보드로 바로 로그인하세요 .
2단계: GPU 노드 생성
계정에 접속하면 대시보드(이미지 참조)가 표시됩니다.
1) 왼쪽 메뉴로 이동하세요.
2) GPU 노드 옵션을 클릭합니다 .
3) 시작 을 클릭하여 첫 번째 GPU 노드 생성을 시작하세요.
이 GPU 노드는 NodeShift 기반의 GPU 구동 가상 머신입니다. 이러한 노드는 고도의 맞춤 설정이 가능하며, 필요에 따라 H100부터 A100에 이르는 다양한 GPU, CPU, RAM, 스토리지 등 다양한 환경 구성을 제어할 수 있습니다.
3단계: GPU 구성 선택(모델, 지역, 저장 장치)
1) 이 튜토리얼에서는 RTX A6000 GPU 1개를 사용하지만, 요구 사항에 따라 다른 GPU를 선택하셔도 됩니다.
2) 마찬가지로 슬라이더를 움직여 200GB 저장 용량을 선택하겠습니다. 또한 사용 가능한 지역 중에서 GPU가 위치할 지역을 선택할 수 있습니다.
4단계: GPU 구성 및 인증 방법 선택
1) 필요한 구성 옵션을 선택하면 해당 지역에서 선택한 구성에 맞는(또는 매우 가까운) 사용 가능한 GPU 노드가 표시됩니다. 이 예시에서는 64vCPU/63GB RAM/200GB SSD 구성의 1x RTX A6000 48GB GPU 노드를 선택하겠습니다.
2) 다음으로 인증 방법을 선택해야 합니다. 비밀번호와 SSH 키 두 가지 방법이 있습니다. SSH 키가 더 안전한 옵션이므로 SSH 키 사용을 권장합니다. SSH 키를 생성하는 방법은 공식 문서를 참조하세요 .
5단계: 이미지를 선택하세요
마지막 단계는 VM에 사용할 이미지를 선택하는 것인데, 저희의 경우 Nvidia Cuda를 선택했습니다 .
이제 노드를 배포할 준비가 되었습니다! 구성 요약을 최종 확인하고, 모든 것이 정상이라면 '생성'을 클릭하여 노드를 배포하세요.
6단계: SSH를 사용하여 활성 컴퓨팅 노드에 연결합니다.
1) 노드를 생성하는 즉시 몇 초에서 몇 분 안에 배포가 완료됩니다. 배포가 완료되면 녹색으로 ' 실행 중 ' 상태가 표시되며 , 이는 컴퓨트 노드를 사용할 준비가 되었음을 의미합니다!
2) GPU에 이 상태가 표시되면 오른쪽의 점 세 개를 클릭하고 "SSH로 연결"을 클릭한 다음 나타나는 SSH 세부 정보를 복사합니다.
세부 정보를 복사하면서 아래 단계를 따라 SSH를 통해 실행 중인 GPU VM에 연결하세요.
1) 터미널을 열고 SSH 명령어를 붙여넣은 후 실행하세요.
2) 경우에 따라 단말기가 연결하기 전에 동의를 구할 수 있습니다. '예'를 입력하세요.
3) 암호를 입력하라는 메시지가 나타납니다. SSH 암호를 입력하면 연결됩니다.
산출:
다음으로, GPU 세부 정보를 확인하려면 터미널에서 다음 명령을 실행하십시오.
!nvidia-smi
7단계: 필요한 라이브러리를 설치하여 프로젝트 환경을 설정합니다.
1) Anaconda를 사용하여 가상 환경을 생성합니다 .
conda create -n medgemma python=3.11 -y && conda activate medgemma
산출:
2) 환경에 접속한 후에는 모델 실행에 필요한 종속성을 설치하십시오.
pip install torch torchvision torchaudio einops timm pillow
pip install git+https://github.com/huggingface/transformers
pip install git+https://github.com/huggingface/accelerate
pip install git+https://github.com/huggingface/diffusers
pip install huggingface_hub
pip install sentencepiece bitsandbytes protobuf decord numpy
산출:
3) Jupyter Notebook을 설치하고 실행합니다.
conda install -c conda-forge --override-channels notebook -y
conda install -c conda-forge --override-channels ipywidgets -y
jupyter notebook --allow-root
4) Huggin Face CLI에 로그인합니다.
MedGemma는 접근 권한이 제한된 모델이므로, 먼저 여기에서 접근 권한을 획득한 다음, HF 접근 토큰을 사용하여 Hugging Face CLI에 로그인해야 모델을 다운로드할 수 있습니다.
( HF READ요청 시 토큰을 입력하십시오.)
huggingface-cli login
산출:
5) 원격 머신(예: NodeShift GPU)을 사용하는 경우 로컬 브라우저에서 Jupyter Notebook 세션에 액세스하려면 SSH 포트 포워딩을 설정해야 합니다.
파일을 교체한 후 로컬 터미널에서 다음 명령어를 실행하세요.
<YOUR_SERVER_PORT>원격 서버에 할당된 PORT를 사용하십시오(NodeShift 서버의 경우 대시보드의 배포된 GPU 세부 정보에서 확인할 수 있습니다).
<PATH_TO_SSH_KEY>SSH 키가 저장된 위치의 경로를 입력하세요.
<YOUR_SERVER_IP>IP원격 서버 주소를 입력하세요 .
ssh -L 8888:localhost:8888 -p <YOUR_SERVER_PORT> -i <PATH_TO_SSH_KEY> root@<YOUR_SERVER_IP>
산출:
다음으로 원격 서버에서 받은 URL을 복사하세요.
이 내용을 브라우저에 붙여넣으면 Jupyter Notebook 세션에 접속할 수 있습니다.
8단계: 모델을 다운로드하고 실행합니다.
a) MedGemma 4B 이미지-텍스트-텍스트 변환(멀티모달)
1) Jupyter에서 Python 노트북을 엽니다.
2) 모델 체크포인트를 다운로드합니다.
from transformers import pipeline
from PIL import Image
import requests
import torch
pipe = pipeline(
"image-text-to-text",
model="google/medgemma-4b-it",
torch_dtype=torch.bfloat16,
device="cuda",
)
산출:
3) 원하는 프롬프트와 이미지를 사용하여 모델을 실행합니다.
from IPython.display import display, Markdown, Image as IPyImage
# Image attribution: Stillwaterising, CC0, via Wikimedia Commons
image_url = "https://upload.wikimedia.org/wikipedia/commons/c/c8/Chest_Xray_PA_3-8-2010.png"
image = Image.open(requests.get(image_url, headers={"User-Agent": "example"}, stream=True).raw)
prompt = "Describe this X-ray"
messages = [
{
"role": "system",
"content": [{"type": "text", "text": "You are an expert radiologist."}]
},
{
"role": "user",
"content": [
{"type": "text", "text": prompt},
{"type": "image", "image": image},
]
}
]
output = pipe(text=messages, max_new_tokens=200)
response = output[0]["generated_text"][-1]["content"]
display(IPyImage(url=image_url))
display(Markdown(f"### Prompt:\n> {prompt}"))
display(Markdown(f"### Radiologist's Description:\n{response}"))
지시사항: "이 엑스레이 사진을 설명하세요."
다음은 입력 이미지입니다.
산출:
b) MedGemma 27B 텍스트 지시 조정(텍스트 전용)
1) Jupyter에서 새 Python 노트북을 엽니다.
2) 모델을 다운로드하여 직접 실행하세요.
여기서는 Hugging Face의 채팅 스타일 템플릿( apply_chat_template)을 사용하여 프롬프트를 구성하고 로드된 MedGemma 모델 체크포인트에서 직접 추론을 실행합니다.
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "google/medgemma-27b-text-it"
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained(model_id)
messages = [
{
"role": "system",
"content": "You are a helpful medical assistant."
},
{
"role": "user",
"content": "How do you differentiate bacterial from viral pneumonia?"
}
]
inputs = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
input_len = inputs["input_ids"].shape[-1]
with torch.inference_mode():
generation = model.generate(**inputs, max_new_tokens=200, do_sample=False)
generation = generation[0][input_len:]
decoded = tokenizer.decode(generation, skip_special_tokens=True)
print(decoded)
산출:
max_new_tokens답변 길이를 변경하려면 원하는 대로 값을 늘리거나 줄일 수 있습니다 .
결론
이 가이드에서는 Google의 강력한 MedGemma 모델(멀티모달 4B와 텍스트 전용 27B)을 로컬/GPU 환경에 설치하고 실행하는 데 필요한 모든 정보를 살펴보았습니다. 모델 아키텍처 이해부터 실제 의료 응용 사례 탐색까지, 이러한 모델은 혁신적인 AI 기반 의료 도구 개발의 가능성을 열어줍니다. 하지만 특히 의료와 같은 민감한 산업에서는 성능과 접근성이 기능만큼이나 중요합니다. 바로 이 부분에서 NodeShift가 도움을 줍니다. NodeShift는 원활한 GPU 접근, 사전 구성된 환경, 그리고 매우 빠른 설정 속도를 제공하여 일반적인 인프라 구축의 어려움을 해소하고, 개발자와 연구자들이 MedGemma와 같은 고성능 모델을 프로덕션 또는 실험 환경에 손쉽게 배포할 수 있도록 지원합니다. 온프레미스 환경에서 테스트하든 클라우드 환경에서 확장하든, NodeShift를 사용하면 몇 분 안에 시스템을 가동할 수 있습니다.
























실행할 파일
답글삭제