데이터 과학 및 AI 빠른 작업을 사용하여 GPU에서 오픈 소스 LLM 미세 조정 및 배포
소개
이 사용지침서에서는 Oracle Cloud Infrastructure(OCI) Data Science 서비스를 사용하여 Data Science에서 제공하는 AI 빠른 작업 기능을 사용하여 오픈 소스 LLM을 미세 조정하는 과정을 안내합니다. 간편한 포인트 앤 클릭 방식으로 AI Quick Actions를 사용하여 Hugging Face에서 제공하는 미스트랄 LLM을 미세 조정하고, NVIDIA가 발표한 FAQ에서 해당 LLM을 미세 조정합니다. 그런 다음 AI Quick Actions를 사용하여 OCI에서 튜닝된 모델을 A10 GPU 형태로 배포할 수 있습니다. 그런 다음 Jupyter 노트북에서 실행되는 Python 코드를 사용하여 튜닝된 모델의 출력에 NVIDIA 교육 데이터와 유사한 원하는 스타일과 톤이 있음을 보여줍니다.
목표
- OCI에서 Data Science 노트북 세션을 실행합니다.
- NVIDIA FAQ를 다운로드하십시오.
- AI Quick Actions를 사용하여 해당 FAQ에서 Hugging Face LLM을 미세 조정하고, OCI의 GPU 구성에서 미세 조정을 수행할 수 있습니다.
- AI Quick Actions를 사용하여 미세 조정된 모델의 학습 곡선을 확인하고, 튜닝된 LLM이 배포에 적합한지 확인할 수 있습니다.
- AI Quick Actions를 사용하여 미세 조정된 LLM을 GPU에 배포할 수 있습니다.
- 코드를 사용하여 배치된 모델의 끝점을 호출합니다.
- OCI 로그를 사용하여 배치된 모델의 끝점으로의 트래픽을 모니터링합니다.
- 데이터 과학의 Jupyter 노트북에서 python을 사용하여 배포된 모델의 품질을 평가합니다.
필수 조건
- OCI Data Science에 대한 기본적인 이해
- A10 이상의 GPU 구성을 사용할 수 있는 리전의 OCI 테넌시에 액세스할 수 있습니다.
- Data Science 노트북을 실행하고 AI Quick Actions를 사용하여 GPU에서 LLM을 미세 조정하고 배치할 수 있는 OCI 정책입니다. 정책에 대한 자세한 지침은 https://github.com/oracle-samples/oci-data-science-ai-samples/tree/main/ai-quick-actions/policies를 참조하십시오.
- OCI 리소스 주체가 사용으로 설정되어 OCI 오브젝트 스토리지 버킷에 파일을 쓸 수 있습니다.
- OCI 리소스 주체가 사용으로 설정되어 OCI에 배치된 모델과 상호 작용할 수 있습니다.
- 활성 토큰이 있는 Hugging Face 계정입니다.
작업 1: Data Science 노트북 세션 프로비전
-
OCI 콘솔을 사용하여 Data Science 프로젝트를 생성합니다.
-
해당 프로젝트로 이동하여 ECPU가 두 개 이상인 Data Science 노트북 세션을 생성합니다.
-
해당 노트북 세션을 열고 확장을 누릅니다.
-
Data Science에서 터미널 세션을 시작합니다.
-
해당 터미널을 사용하여 이 자습서에서 사용할 Jupyter 노트북이 포함된 github 저장소를 복제합니다.
git clone https://github.com/oracle-nace-dsai/quick-actions-demo-archive.git -
NVIDIA 복제 FAQ:
git clone https://huggingface.co/datasets/ajsbsd/nvidia-qa -
첫 번째 저장소의 데이터 디렉토리에 NVIDIA FAQ 복사
cp nvidia-qa/NvidiaDocumentationQandApairs.csv quick-actions-demo-archive/data/. -
General Machine Learning for CPUs on Python 3.11conda를 설치한 후 활성화합니다.odsc conda install -s generalml_p311_cpu_x86_64_v1 conda activate /home/datascience/conda/generalml_p311_cpu_x86_64_v1 -
https://github.com/oracle-samples/oci-data-science-ai-samples/blob/main/ai-quick-actions/model-deployment-tips.md#using-python-sdk-without-streaming당 LangChain 설치
pip install langgraph "langchain>=0.3" "langchain-community>=0.3" "langchain-openai>=0.2.3" "oracle-ads>2.12"
작업 2: Hugging Face 계정 설정
-
https://huggingface.co.에서 Hugging Face 계정 만들기
-
Hugging Face 계정 > 액세스 토큰으로 이동하여 다음 권한을 확인한 새 사용자 액세스 토큰을 생성합니다.
- 개인 네임스페이스 아래의 모든 저장소 콘텐츠에 대한 읽기 액세스 권한
- 액세스할 수 있는 모든 공용 게이트 저장소의 콘텐츠에 대한 읽기 액세스 권한
-
Data Science 터미널 세션을 사용하여 Hugging Face로 사용자 액세스 토큰을 기록합니다.
git config --global credential.helper store huggingface-cli login
작업 3: 오브젝트 스토리지 버킷 생성
Data Science 노트북과 동일한 지역 및 컴파트먼트에 오브젝트 스토리지 버킷을 생성합니다.
- 객체 버전 지정 사용을 선택합니다.
작업 4: 로깅 설정
로그 그룹, 사용자정의 로그 생성 순으로 생성합니다.
- 에이전트 구성 생성의 경우
Add configuration later을 선택합니다.
작업 5: 데이터 과학의 AI 빠른 작업을 사용하여 미세 조정 없이 A10 GPU 구성에 LLM 배포
-
Data Science 노트북 > 실행기 > AI 빠른 작업으로 이동합니다.
a.
Mistral모델
b를 검색합니다.mistralai/Mistral-7B-Instruct-v0.3타일
c를 누릅니다. 위의 로그가 선택된 상태로 배치를 누릅니다. -
모델 배치는 약 15분 정도 걸립니다. 터미널에서 로그 열기를 선택하여 배치 로그를 모니터할 수 있습니다.
-
모델 배포가 완료된 후 배포 > <직접 배포된 모델> > 모델 테스트로 이동하여 다음과 같은 간단한 질문으로 해당 모델을 재생 테스트합니다.
Who wrote the Harry Potter book series? -
일부 간단한 LLM은 다음 테스트 질문에 올바르게 답변하지 못할 수 있지만
Mistral-7B-Instruct-v0.3는 이러한 질문에 답하는 데 매우 적합한 작업을 수행합니다.A bat and a ball cost $1.10 in total. The bat costs $1.00 more than the ball. How much does the ball cost? Every cat has four legs. My pet has four legs. Is my pet a cat? Who is President of the United States?
작업 6: 배치된 모델의 끝점과 상호 작용
-
배치 > <직접 배치된 모델> 모델 호출로 이동하여 배치된 모델의 끝점을 확인합니다. 그런 다음 Data Science 터미널을 사용하여 해당 끝점을 셸 변수로 저장합니다. 예:
endpoint=https://modeldeployment.<region>.oci.customer-oci.com/<model_ocid>/predict -
배치된 모델의 끝점으로 프롬프트를 전송합니다.
prompt="Who is President of the United States?" request_body='{"model":"odsc-llm","prompt":"'$prompt'","max_tokens":100,"temperature":0.1,"top_k":50,"top_p":0.99,"stop":[],"frequency_penalty":0,"presence_penalty":0}' oci raw-request --http-method POST --target-uri $endpoint --request-body "$request_body" --auth resource_principal -
이 Bash 루프를 사용하여 10초 내에 모델의 끝점을 100회 호출합니다.
for i in $(seq 1 100); do oci raw-request --http-method POST --target-uri $endpoint --request-body "$request_body" --auth resource_principal & echo $i sleep 0.1 done -
배치 > <직접 배치된 모델> > 로그로 이동하여 방금 모델의 끝점으로 전송된 트래픽을 확인합니다.

작업 7: AI 빠른 작업을 사용하여 LLM 미세 조정
이전 작업은 미세 조정 없이 Mistral LLM을 배포했습니다. 이 작업은 동일한 LLM을 미세 조정한 후 배치합니다. 작업 9는 모델의 출력, 튜닝 및 튜닝되지 않은 결과를 모두 비교합니다. 이 작업과 다음 작업은 이 코드 아카이브에서 다운로드한 두 개의 Jupyter 노트북도 사용합니다.
-
Data Science 노트북의 파일 브라우저를 사용하여
quick-actions-demo-archive폴더로 이동하고prep_data.ipynbJupyter 노트북을 엽니다. -
generalml_p311_cpu_x86_64_v1커널을 선택합니다. -
노트북이 테넌시/네임스페이스 및 오브젝트 스토리지 버킷을 참조하도록 노트북의 두번째-마지막 단락을 개정합니다.
-
다음 작업을 수행할
prep_data.ipynbJupyter 노트북을 실행합니다.data/NvidiaDocumentationQandApairs.csv파일에서 NVIDIA FAQ를 읽어보십시오.- AI 빠른 작업에서 예상되는
prompt및completion필드가 있는 JSON 레코드로 CSV FAQ를 재구성합니다. - 해당 데이터의 90:10 분할을 train:test 샘플로 수행합니다.
- 교육 샘플을 Object Storage의
quick_actions/tuning_data/tune_sample.jsonl파일로 푸시합니다.
-
AI 빠른 작업 > 모델 >
mistralai/Mistral-7B-Instruct-v0.3으로 이동합니다. 그런 다음 다음 다음 설정을 사용하여 Fine-Tune을 누릅니다.- 오브젝트 스토리지 경로 =
quick_actions/tuning_data/tune_sample.jsonl - 검증 분할 =
20% - 결과 오브젝트 스토리지 경로 =
quick_actions/tuning_results - 구성 =
BM.GPU.A10.4(사용 가능 여부가 있는 경우) 그렇지 않은 경우10.2또는10.1구성을 사용합니다. - 로그 그룹 및 로그 선택
- 오브젝트 스토리지 경로 =
-
다음 설정으로 고급 구성 표시를 사용으로 설정합니다.
batch_size = 64sequence_len = 256learning_rate = 0.000025epochs = 12
-
미세 조정은 A10.2에서 약 60분 정도 걸리므로 터미널에서 로그 열기를 눌러 미세 조정 작업의 로그를 모니터합니다.
-
측정항목 섹션에서 미세 조정된 모델의 학습 곡선을 봅니다. 잘 튜닝된 모델에는 검증 손실 곡선이 있으며, 그 다음에는 시기가 늘어나는 고원이 내려집니다.

작업 8: 미세 조정된 LLM 배치
-
다음 설정을 사용하여 AI 빠른 작업 > 미리 튜닝된 모델 > <단순 튜닝된 모델> > 배포로 이동합니다.
- 컴퓨트 구성 =
VM.GPU.A10.1 - 로그 그룹 및 로그를 선택합니다.
- 컴퓨트 구성 =
-
터미널에서 로그 열기를 눌러 배치 로그를 모니터합니다.
작업 9: 미세 조정된 LLM 배치 테스트
-
모델 배치가 완료된 후 배치 > <적절하게 튜닝된 모델> > 모델 테스트로 이동하여
prep_data.ipynb노트북에 표시되는 테스트 샘플 질문의 질문을 사용하여 playtest를 수행합니다.What benefits does Unified Memory bring to complex data structures and classes? -
모델의 끝점을 터미널 세션의 셸 변수에 복사/붙여넣습니다.
endpoint=https://modeldeployment.<region>.oci.customer-oci.com/<model_ocid>/predict -
배치된 모델의 끝점으로 프롬프트를 전송합니다.
prompt="What benefits does Unified Memory bring to complex data structures and classes?" request_body='{"model":"odsc-llm","prompt":"'$prompt'","max_tokens":100,"temperature":0.1,"top_k":50,"top_p":0.99,"stop":[],"frequency_penalty":0,"presence_penalty":0}' oci raw-request --http-method POST --target-uri $endpoint --request-body "$request_body" --auth resource_principal -
이 Bash 루프를 사용하여 모델 끝점을 100회 호출합니다.
for i in $(seq 1 100); do oci raw-request --http-method POST --target-uri $endpoint --request-body "$request_body" --auth resource_principal & echo $i sleep 0.1 done -
미세 조정/배치된 모델의 로그를 눌러 해당 모델의 끝점에 대한 최근 트래픽을 확인합니다.
-
compare_models.ipynbJupyter 노트북을 열고 [8] 단락을 업데이트하여 튜닝 및 튜닝되지 않은 두 모델의 끝점을 참조합니다. -
다음 작업을 수행할 노트북을 실행합니다.
- FAQ 레코드의 테스트 샘플을 참조하십시오.
- python을 사용하여 다섯 가지 테스트 질문을 미세 조정 및 조정되지 않은 모델의 엔드포인트에 공급하고 응답을 비교합니다.
-
python을 사용하여 배포된 모델의 엔드포인트를 호출하는 방법을 보여주는 [10] 단락을 참고하십시오.

-
이 테스트의 주요 결과를 검토합니다.
- 미세 조정된 LLM의 응답에는 실제 NVIDIA가 작성한 FAQ 답변과 상당히 유사한 어조, 스타일, 길이가 있습니다.
- 튜닝되지 않은 LLM의 응답은 훨씬 상세하며 부정확할 가능성이 높은 많은 불필요한 명령문을 포함합니다.
- 미세 조정된 LLM과 튜닝되지 않은 LLM의 응답은 그렇지 않은 것보다 더 자주 부정확합니다.
- 훨씬 더 큰 데이터 세트를 미세 조정하면 응답의 정확도가 높아질 수 있습니다.
작업 10: 리소스 삭제
-
AI 빠른 작업 > 배포로 이동하여 모델 배포를 삭제합니다.
-
AI 빠른 작업 > 모델 > 미세 조정 모델로 이동하여 삭제합니다.
-
OCI 콘솔 페이지를 사용하여 Data Science 노트북 세션으로 이동하고 종료를 수행합니다.
-
작업을 누르고 미세 조정 작업을 삭제합니다.
-
Data Science 프로젝트를 삭제합니다.
-
OCI 콘솔 페이지에서는 오브젝트 스토리지 버킷으로 이동하여 삭제할 수 있습니다.
-
OCI 콘솔을 사용하여 로그 및 로그 그룹을 삭제합니다.
관련 링크
승인
- Authors - 수석 데이터 과학자 Joe Hahn, joe.hahn@oracle.com
- Contributors - Kevin Ortiz, 선임 클라우드 아키텍트, kevin.ortiz@oracle.com
추가 학습 자원
docs.oracle.com/learn에서 다른 랩을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Fine-Tune & Deploy an Open Source LLM on GPU using Data Science and AI Quick Actions
G42934-02