Brev.dev는 NVIDIA NGC 카탈로그의 소프트웨어 라이브러리, 프레임워크 및 Jupyter Notebooks를 활용하여 AI 솔루션 개발을 더 쉽게 만들고 있습니다.
Brev.dev를 활용하면 클라우드 오케스트레이션 도구와 간단한 UI를 함께 사용하여 NVIDIA GPU에 소프트웨어를 쉽게 배포할 수 있습니다. 어떤 클라우드에서도 안정적으로 온디맨드 GPU를 사용하거나, Brev CLI를 통해 브라우저 내에서 노트북에 액세스하거나, 시스템에 직접 SSH로 연결할 수 있습니다.
NGC 카탈로그는 컨테이너, 모델, Jupyter Notebooks 등 보안된 GPU 최적화 소프트웨어를 위한 허브입니다. 이 카탈로그는 AI 솔루션 개발 및 배포 프로세스를 단순화하여 엔터프라이즈의 시장 출시 시간을 단축합니다.
솔루션 하이라이트
이 통합은 클라우드에서 GPU 인스턴스를 시작하고 통합 개발 환경(IDE)을 확보할 때 종종 수반되는, 기본 소프트웨어 스택 설정, 올바른 컴퓨팅 프로비저닝, SSH 키 관리 등의 다양한 문제를 해결합니다. 이제 클릭 한 번으로 NGC 카탈로그의 다양한 소프트웨어를 선호하는 컴퓨팅 및 IDE에 원활하게 배포할 수 있습니다.
이 솔루션의 주요 특징은 다음과 같습니다.
- 원클릭 배포: 프로비저닝 또는 설정을 위한 견적이나 전문 지식 없이도 NVIDIA AI 소프트웨어를 손쉽게 배포할 수 있습니다. 이와 같이 손이 많이 가는 프로세스에는 많은 시간이 소요되는데, 한 번의 클릭으로 2~3분 내에 배포할 수 있게 됩니다.
- 어디에나 배포 가능: Brev의 API는 온프레미스 데이터센터, 퍼블릭 클라우드 제공업체, 하이브리드 및 프라이빗 클라우드 전반에 걸친 통합 인터페이스 역할을 합니다. 이를 통해 어떤 환경에서도 NVIDIA 소프트웨어를 쉽게 배포할 수 있습니다. Brev에 클라우드를 추가하여 모든 컴퓨팅 소스에 대해 발생할 수 있는 고착 상태를 제거하세요.
- 간소화된 설정 프로세스: Brev의 오픈 소스 컨테이너 도구인 Verb는 모든 GPU에 CUDA 및 Python을 안정적으로 설치하고 종속성 문제를 해결하여 귀중한 시간을 절약해 줍니다.
- 안전한 네트워킹: Brev의 CLI 도구를 사용하면 SSH 키를 손쉽게 관리하여 성가신 IP 또는 PEM 파일을 처리하지 않고도 모든 컴퓨팅 소스에 안전하게 연결할 수 있습니다.
Mistral Jupyter Notebook 파인 튜닝
이 섹션에서는 거대 언어 모델(LLM) 파인 튜닝에 초점을 맞춘 Jupyter Notebook을 예시로 살펴보겠습니다. 특히 NVIDIA NeMo를 사용하여 질문-답변 작업을 위한 Misral 7B를 학습하고 평가하며 테스트하는 방법을 살펴봅니다.
NVIDIA NeMo는 어디서든 맞춤화된 생성형 AI를 개발할 수 있는 엔드 투 엔드 플랫폼입니다. 여기에는 데이터 큐레이션, 학습, 검색 증강 생성(RAG), 가드레일을 위한 도구를 포함하고 있어 기업이 이를 통해 생성형 AI를 쉽고 비용 효율적이며 빠르게 채택할 수 있게 합니다.
Brev의 원클릭 배포 통합을 활용하면 NeMo를 통해 GPU에 빠르게 액세스하고 생성형 AI 모델을 맞춤화할 수 있습니다. NeMo를 포함한 필수 소프트웨어 스택은 Brev의 플랫폼에 의해 설정되므로 사용자는 AI 개발에만 집중할 수 있습니다. 이제 필요한 인프라 관리 오버헤드를 걱정할 필요 없이 완전히 GPU 가속화된 스택을 빠르게 활용할 수 있습니다.
1단계: 전제 조건 설정
먼저 NGC 카탈로그에서 노트북을 다운로드합니다. Brev에 배포되고 나면 브라우저에서 액세스하여 다양한 코드 블록을 실행할 수 있습니다.
NGC 카탈로그 페이지에서 원클릭 배포 버튼을 선택합니다. Brev에서 노트북을 파인 튜닝하라는 안내가 표시됩니다(그림 1).

그런 다음 Deploy Notebook 버튼을 클릭합니다(그림 2). Brev의 신규 사용자인 경우 계정을 생성하라는 메시지가 표시됩니다. 이 경우 Deploy Notebook 버튼을 다시 클릭해야 합니다.

인스턴스가 설정 및 구성을 마칠 때까지 기다립니다. JupyterLab이 NVIDIA A100 Tensor Core GPU에서 준비되면 Access Notebook을 클릭합니다.
2단계: 기본 모델 준비
다음으로, Mistral 7B를 인스턴스에 다운로드하고 .nemo 형식으로 변환합니다. 다음 명령을 사용하여 Hugging Face에서 모델을 가져오고 변환 스크립트를 실행합니다.
!pip install ipywidgets !jupyter nbextension enable --py widgetsnbextension !mkdir -p models/mistral7b
import
huggingface_hub from
huggingface_hub import
login TOKEN =
"" login(TOKEN)
huggingface_hub.snapshot_download(repo_id="mistralai/Mistral-7B-v0.1",
local_dir="models/mistral7b", local_dir_use_symlinks=False) !python
/opt/NeMo/scripts/nlp_language_modeling/convert_hf_mistral_7b_to_nemo.py
--in-file=models/mistral7b --out-file=models/mistral7b.nemo
이 명령은 NeMo의 nlp_language_modeling 하위 디렉터리를 사용하여 Mistral 모델을 .nemo 형식으로 변환하므로 NeMo 프레임워크를 파인 튜닝에 활용할 수 있습니다.
3단계: 파인 튜닝 데이터 준비
이 예시에서는 PubMedQA 데이터세트의 Mistral 7B를 파인 튜닝합니다. PubMedQA의 임무는 의학 연구 질문에 예/아니요/아마도 있음으로 대답하는 것입니다. PubMedQA에는 전문가 레이블이 지정된 1K, 레이블이 지정되지 않은 61.2K, AI에 의해 생성된 211.3K개의 QA 인스턴스 가 있습니다.
다음 명령은 NeMo를 통해 매개변수 효율적으로 파인 튜닝(PEFT)을 하기 위해 PubMedQA 데이터를 .jsonl 형식으로 변환합니다. 또한 모델이 적절하게 처리할 수 있는 프롬프트로 데이터의 형식을 다시 지정해야 합니다.
!git clone https://github.com/pubmedqa/pubmedqa.git !cd pubmedqa/preprocess && python split_dataset.py pqal
import json
def write_jsonl(fname, json_objs):
with open(fname, 'wt') as f:
for o in json_objs:
f.write(json.dumps(o)+"\n")
def form_question(obj):
st = ""
st += f"QUESTION:{obj['QUESTION']}\n"
st += "CONTEXT: "
for i, label in enumerate(obj['LABELS']):
st += f"{obj['CONTEXTS'][i]}\n"
st += f"TARGET: the answer to the question given the context is (yes|no|maybe): "
return st
def convert_to_jsonl(data_path, output_path):
data = json.load(open(data_path, 'rt'))
json_objs = []
for k in data.keys():
obj = data[k]
prompt = form_question(obj)
completion = obj['reasoning_required_pred']
json_objs.append({"input": prompt, "output": completion})
write_jsonl(output_path, json_objs)
return json_objs
test_json_objs = convert_to_jsonl("pubmedqa/data/test_set.json", "pubmedqa_test.jsonl")
train_json_objs = convert_to_jsonl("pubmedqa/data/pqal_fold0/train_set.json", "pubmedqa_train.jsonl")
dev_json_objs = convert_to_jsonl("pubmedqa/data/pqal_fold0/dev_set.json", "pubmedqa_val.jsonl")
이제 데이터가 준비되었습니다. 트레이닝 및 테스트 데이터세트는 파인 튜닝 작업에 맞춰 설정됩니다.
4단계: 트레이닝 실행
GPU 구성, 정밀도, 최대 단계 등을 설정한 후 NeMo 프레임워크를 사용하여 트레이닝 파이프라인을 초기화합니다. 아래 코드는 필요한 클래스와 모듈을 가져오고, 트레이너 인스턴스를 만들며, Experiment Manager를 설정하고, 사전 학습된 Megatron GPT 모델을 로드합니다. 그러면 구성이 병합되고 제공된 트레이너를 통해 모델이 복원됩니다. 이 설정은 LoRA 및 PEFT를 통해 Mistral의 실제 파인 튜닝을 실행합니다.
from nemo.collections.nlp.models.language_modeling.megatron_gpt_sft_model import MegatronGPTSFTModel from nemo.collections.nlp.parts.megatron_trainer_builder import MegatronLMPPTrainerBuilder from nemo.collections.nlp.parts.peft_config import LoraPEFTConfig from nemo.utils.exp_manager import exp_manager trainer = MegatronLMPPTrainerBuilder(cfg).create_trainer() exp_manager(trainer, cfg.exp_manager) model_cfg = MegatronGPTSFTModel.merge_cfg_with(cfg.model.restore_from_path, cfg) model = MegatronGPTSFTModel.restore_from(cfg.model.restore_from_path, model_cfg, trainer=trainer) model.add_adapter(LoraPEFTConfig(model_cfg)) trainer.fit(model)
NVIDIA NeMo 프레임워크 시작 관리자 및 도구에 대한 문서를 보려면 GitHub의 NVIDIA/NeMo-Framework-Launcher를 방문하세요.
5단계: 성능 및 결과 보기
이제 Mistral 7B 모델이 파인 튜닝되었으므로 다음 명령을 사용하여 테스트 데이터세트에서 얼마나 잘 실행되는지 확인합니다.
trainer.test(model)
Trainer.test(model)
라인은 테스트 데이터세트에서 모델의 성능을 평가하는 테스트 루프를 실행합니다. 출력에는 테스트 메트릭(테스트 손실 및 PubMedQA 데이터세트의 손실 포함)과 검증 손실이 표시됩니다. LoRA 어댑터가 Mistral을 파인 튜닝하는 데 사용되었으므로 이는 PEFT 이후의 모델 성능을 측정하는 좋은 방법이 됩니다.
이제 NeMo를 사용하여 Mistral 7B를 성공적으로 파인 튜닝했습니다.
모든 클라우드의 단일 인터페이스 역할을 하고 설정 프로세스를 자동화하는 Brev를 사용하면 NVIDIA 에코시스템을 벗어나지 않고도 NVIDIA 소프트웨어의 성능을 완전히 누릴 수 있습니다. 제약 조건이 적은 NGC 소프트웨어의 모든 기능을 활용하여 모든 프로젝트 규모에서 AI 개발 및 배포 용이성을 개선해 보세요.
시작하기
GPU 인프라를 프로비저닝하는 Brev의 원클릭 배포를 시작하세요. 처음 2시간은 무료입니다.
또한, Brev는 원클릭 배포 기능을 NGC 카탈로그의 더 많은 NVIDIA 소프트웨어로 적극적으로 확장하고 있습니다. Brev.dev 컬렉션을 통한 빠른 배포에 관해 알아보세요.
관련 리소스