GCP ML Engineer 시험 노트개념 정리15 MIN
Model Garden 오픈 모델 프로토타입
Model Garden 튜토리얼 노트북으로 프로토타입을 여는 길, Gemma·Llama를 노트북에서 불러오고 파인튜닝하는 법, Hugging Face Hub 모델과 보안 스캔, 모델 카드에서 읽어야 할 것을 봅니다.
05편은 Model Garden에서 모델을 고르는 기준을 봤습니다. 이번 노트는 고른 오픈 모델을 노트북에 올려 손으로 만져 보는 단계입니다. 시험 가이드는 이 자리를 「팀 간 협업으로 데이터·모델 관리」 섹션 안에 따로 세워 두었는데, 노트북 하나가 팀이 함께 보는 출발점이 되기 때문입니다. 문항은 대개 「가장 적은 수고로 오픈 모델을 시험해 보려면」·「외부 모델을 들일 때 무엇을 먼저 확인하나」 꼴로 나옵니다.
Model Garden 노트북
튜토리얼 노트북
Model Garden의 오픈 모델 항목에는 대부분 미리 짜 둔 튜토리얼 노트북이 붙어 있습니다. 그 모델을 불러오고, 엔드포인트에 배포하고, 예측을 한 번 호출하고, 때로는 파인튜닝까지 하는 셀이 차례로 들어 있는 노트북입니다. 빈 노트북에서 패키지 버전과 컨테이너 이미지를 맞추느라 하루를 쓰는 대신, 이 노트북을 열고 프로젝트 id와 리전만 바꿔 위에서부터 돌리면 첫 결과가 나옵니다.
「가장 빠르게 오픈 모델의 프로토타입을 세워라」라는 조건에서 답이 거의 언제나 이 노트북인 이유가 여기 있습니다. 직접 컨테이너를 빌드하거나 GKE 클러스터를 띄우는 보기는 결과는 같아도 수고가 훨씬 큽니다.
노트북을 여는 곳
모델 카드의 노트북 열기 단추를 누르면 노트북이 Colab Enterprise나 Workbench 인스턴스로 열립니다. 08편에서 본 대로 Colab Enterprise는 관리자가 정한 런타임 템플릿으로 바로 붙고, Workbench는 사양을 직접 고르는 쪽입니다. 콘솔에서 밟는 순서는 이렇습니다.
- Model Garden에서 모델 카드를 연다.
- 노트북 열기를 누르고 Colab Enterprise나 Workbench를 고른다.
- 런타임을 붙이고 첫 셀의 프로젝트·리전·버킷 변수를 채운다.
- 셀을 위에서부터 차례로 실행한다.
이 노트북은 팀의 공용 출발점이 됩니다. 같은 노트북을 공유해 놓으면 다른 사람이 같은 셀을 돌려 같은 결과를 확인할 수 있고, 바꾼 곳만 비교하면 됩니다.
오픈 모델 불러오기
Gemma
Gemma는 Google이 가중치를 공개한 언어 모델 계열입니다. 크기가 여럿이라 노트북에 붙은 GPU 하나로도 작은 쪽은 돌아가고, 가중치를 내가 받으므로 데이터를 밖으로 보내지 않고 시험해 볼 수 있습니다. 노트북 안에서 가중치를 직접 불러와 몇 문장을 생성해 보는 것이 가장 짧은 확인입니다.
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "google/gemma-3-1b-it"
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")
inputs = tok("반품 정책을 한 문장으로 요약하세요:", return_tensors="pt").to(model.device)
print(tok.decode(model.generate(**inputs, max_new_tokens=60)[0]))
Llama와 라이선스
Llama는 Meta가 가중치를 공개한 모델 계열입니다. 오픈 웨이트라도 사용 조건이 붙어 있어서, Model Garden에서 쓰려면 먼저 그 모델의 라이선스 동의를 거쳐야 합니다. 동의 없이 배포 셀을 돌리면 권한 오류로 멈추는데, 이것을 IAM 문제로 오해하고 역할을 더 붙이는 보기가 오답으로 자주 섞여 나옵니다.
엔드포인트 배포
노트북의 GPU에서 돌리는 것은 확인용이고, 다른 사람이 호출하게 하려면 엔드포인트에 올립니다. Model Garden SDK는 모델 id 하나로 권장 사양을 골라 배포해 줍니다.
from vertexai import model_garden
model = model_garden.OpenModel("google/gemma3@gemma-3-1b-it")
print(model.list_deploy_options()) # 권장 머신 타입과 가속기
endpoint = model.deploy(accept_eula=True) # 사용 조건 동의를 함께 넘긴다
print(endpoint.predict(instances=[{"prompt": "안녕하세요"}]))
accept_eula가 앞 소절의 라이선스 동의를 코드로 하는 자리입니다. 엔드포인트는 뜬 시간만큼 요금이 나가므로 프로토타입이 끝나면 내리는 셀까지 돌려야 합니다.
파인튜닝
튜닝 가능 모델
모든 오픈 모델이 같은 방식으로 튜닝되지는 않습니다. 모델 카드에 파인튜닝 가능 여부와 지원 방식이 적혀 있고, 튜닝을 지원하는 모델은 튜닝 전용 노트북이나 관리형 튜닝 작업이 함께 붙어 있습니다. 「이 모델을 우리 데이터로 고쳐 쓸 수 있나」의 첫 답은 카드에서 나옵니다.
커스텀 노트북
관리형 튜닝이 정한 틀이 맞지 않으면 튜토리얼 노트북을 복사해 내 노트북으로 손봅니다. 가장 흔한 손질이 LoRA입니다. 원래 가중치는 얼려 두고 작은 보조 행렬만 학습하는 방식이라, 전체를 다시 학습할 때보다 메모리와 시간이 크게 줄어 노트북 하나의 GPU에서도 돌아갑니다.
from peft import LoraConfig, get_peft_model
config = LoraConfig(r=8, lora_alpha=16, target_modules=["q_proj", "v_proj"], task_type="CAUSAL_LM")
model = get_peft_model(model, config)
model.print_trainable_parameters() # 학습되는 파라미터가 전체의 일부임을 확인
노트북에서 몇 백 건으로 효과를 확인했으면 같은 코드를 스크립트로 빼서 학습 작업으로 제출합니다. 노트북에서 며칠짜리 튜닝을 돌리는 것은 08편에서 본 비용·재현성 문제를 그대로 되풀이합니다.
Hugging Face Hub 모델
Hub 모델 배포
Model Garden에 없는 모델도 Hugging Face Hub에 있으면 불러올 수 있습니다. Hub는 누구나 모델을 올리는 공개 저장소이고, Model Garden은 Hub의 모델 id를 받아 같은 배포 경로에 태웁니다. 비공개 모델이나 동의가 필요한 모델은 Hugging Face 접근 토큰을 함께 넘깁니다.
model = model_garden.OpenModel("meta-llama/Llama-3.3-70B-Instruct")
endpoint = model.deploy(hugging_face_access_token=HF_TOKEN, accept_eula=True)
토큰은 노트북 셀에 그대로 적지 말고 Secret Manager에서 읽어 옵니다. 공유한 노트북에 토큰이 박혀 있으면 노트북을 여는 모든 사람이 그 토큰을 갖게 됩니다.
보안 스캔
누구나 올리는 저장소라 가중치 파일에 실행 코드가 숨어 있을 수 있습니다. 특히 파이썬 pickle 형식은 파일을 불러오는 순간 안에 든 코드가 실행될 수 있는 직렬화 방식이라 위험합니다. Model Garden은 Hub 모델을 들일 때 이런 위험을 찾는 보안 스캔을 거치게 하고, 텐서 값만 담아 코드가 실행될 여지가 없는 safetensors 형식이 안전한 쪽입니다.
| Model Garden 큐레이션 모델 | Hugging Face Hub 모델 | |
|---|---|---|
| 누가 올렸나 | Google과 파트너 | 누구나 |
| 검증 | 카탈로그에 넣기 전에 검토 | 들일 때 보안 스캔 |
| 맞는 자리 | 바로 쓸 수 있는 주요 모델 | 카탈로그에 없는 특수 모델 |
출처를 알 수 없는 모델을 운영에 들이는 문항이면 답의 방향은 「스캔과 형식을 확인한다」입니다. 스캔 없이 로컬에서 받아 바로 컨테이너에 굽는 보기는 편해 보여도 그 검증을 건너뜁니다.
모델 카드
세부 정보
모델 카드는 모델의 이력서입니다. 프로토타입 전에 카드에서 읽어야 할 것이 다섯입니다.
- 입력·출력 모달리티와 컨텍스트 길이
- 라이선스와 사용 조건
- 파인튜닝 지원 여부와 방식
- 권장 배포 사양(머신 타입과 가속기)
- 학습 데이터·평가 결과·알려진 한계
마지막 줄이 협업에서 값을 합니다. 카드에 「영어 위주로 학습됨」이 적혀 있으면 한국어 고객 문의에 쓸 때 평가를 따로 해야 한다는 것을 팀 전체가 같은 문서에서 읽습니다.
카드로 거르기
카드는 고르는 도구이기도 합니다. 조건이 「상업적으로 쓸 수 있어야 한다」면 라이선스 줄이, 「GPU 한 장에 올라가야 한다」면 권장 사양 줄이 후보를 지웁니다. 시험은 보기 넷을 전부 쓸 만한 모델로 채워 두고 이런 조건 하나로 답을 가르므로, 문제 문장에서 카드의 어느 줄에 걸리는 조건인지를 먼저 찾으면 됩니다.
연습 문제
데이터 과학 팀이 Gemma를 처음 시험해 보려 합니다. 가장 적은 수고로 첫 결과를 얻는 방법은?
① 직접 서빙 컨테이너를 빌드해 GKE에 배포한다
② Model Garden의 Gemma 튜토리얼 노트북을 Colab Enterprise로 연다
③ 가중치를 개인 노트북으로 내려받아 실행한다
④ AutoML로 같은 크기의 모델을 학습한다②. 불러오기·배포·호출 셀이 이미 짜여 있어 프로젝트와 리전만 바꾸면 됩니다. ③은 데이터 경계를 벗어나고, ①은 결과는 같아도 수고가 큽니다.Llama 모델의 배포 셀이 권한 오류로 멈췄습니다. 서비스 계정에는 배포 권한이 있습니다. 먼저 할 일은?
① 서비스 계정에 소유자 역할을 붙인다
② 그 모델의 라이선스 동의를 거친다
③ 리전을 바꾼다
④ GPU 할당량을 늘린다②. 사용 조건이 붙은 오픈 모델은 동의가 먼저입니다. ①은 문제를 풀지 못하고 최소 권한 원칙만 깨뜨립니다.Hugging Face Hub에서 찾은 모델의 가중치가 pickle 형식으로만 올라와 있습니다. 운영에 들이기 전 가장 알맞은 판단은?
① 다운로드 수가 많으니 그대로 쓴다
② 보안 스캔을 거치고 가능하면 safetensors 형식을 찾는다
③ 노트북에서 한 번 불러와 오류가 없으면 쓴다
④ 파일 크기가 작으면 안전하다고 본다②. pickle은 불러오는 순간 코드가 실행될 수 있어, ③처럼 불러와 보는 것 자체가 위험합니다.GPU 한 장짜리 노트북에서 오픈 모델을 사내 문서 몇 백 건으로 빠르게 파인튜닝해 보려 합니다. 알맞은 방식은?
① 모든 가중치를 처음부터 다시 학습한다
② 원래 가중치를 얼리고 LoRA 보조 행렬만 학습한다
③ 모델 카드의 평가 결과를 고친다
④ 엔드포인트의 복제본 수를 늘린다②. 학습할 파라미터가 작아 메모리와 시간이 크게 줄어듭니다. 효과를 확인한 뒤 같은 코드를 학습 작업으로 옮깁니다.고객 문의 대부분이 한국어인 서비스에 오픈 모델을 고르려 합니다. 모델 카드에서 가장 먼저 확인할 줄은?
① 권장 머신 타입
② 학습 데이터와 알려진 한계
③ 노트북 열기 단추의 위치
④ 모델 이름의 버전 번호②. 학습 언어가 한정돼 있으면 한국어 평가를 따로 해야 합니다. ①은 비용 조건일 때 보는 줄입니다.공유 노트북의 첫 셀에 Hugging Face 접근 토큰이 문자열로 적혀 있습니다. 알맞은 조치는?
① 셀을 접어 둔다
② 토큰을 Secret Manager에 두고 노트북은 그것을 읽게 한다
③ 노트북 이름을 바꾼다
④ 노트북을 PDF로 내보낸다②. 노트북을 여는 모든 사람이 토큰을 갖게 되므로 비밀 값은 노트북 밖에 둡니다. 이미 노출된 토큰은 새로 발급해 바꿉니다.

