이 문서에서는 Notebook 및 작업에서 서버리스 GPU 컴퓨팅을 사용하기 위한 모범 사례 권장 사항을 제공합니다.
이러한 권장 사항에 따라 Azure Databricks에서 워크로드의 생산성, 비용 효율성 및 안정성을 향상시킬 수 있습니다.
올바른 컴퓨팅 사용
- 서버리스 GPU 컴퓨팅을 사용합니다. 이 옵션은 호환성을 위해 최적화된 토치, cuda 및 torchvision과 함께 제공됩니다. 정확한 패키지 버전은 환경 버전에 따라 달라집니다.
- 환경 쪽 패널에서 액셀러레이터를 선택합니다.
- 원격 분산 학습 워크로드의 경우 나중에 원격 H100에 작업을 보내는 클라이언트가 될 A10 GPU를 사용합니다.
- Notebook 자체에서 대규모 대화형 작업을 실행하기 위해 노트북을 H100에 연결할 수 있습니다. 이 경우 노드 1개(H100 GPU 8개)가 사용됩니다.
- GPU를 사용하지 않도록 하기 위해 Git 복제 및 Spark 데이터 프레임을 Mosaic MDS(데이터 분할) 형식으로 변환하는 등의 일부 작업을 위해 노트북을 CPU 클러스터에 연결할 수 있습니다.
MLflow 권장 사항
최적의 ML 개발 주기를 위해 Databricks에서 MLflow 3을 사용합니다. 다음 팁을 따르세요.
환경의 MLflow를 버전 3.6 이상으로 업그레이드하고 MLflow 3 딥 러닝 워크플로의 MLflow 딥 러닝 흐름을 따릅니다.
매개 변수
step를MLFlowLogger적절한 일괄 처리 수로 설정합니다. MLflow에는 기록할 수 있는 메트릭 단계가 1,000만 개로 제한됩니다. 리소스 한도를 참조하세요.Pytorch Lightning이 트레이너로 사용되는 경우 사용하도록 설정합니다
mlflow.pytorch.autolog().API 범위 내에서
mlflow.start_run()모델 학습 코드를 캡슐화하여 MLflow 실행 이름을 사용자 지정합니다. 이렇게 하면 실행 이름을 제어할 수 있으며 이전 실행에서 다시 시작할 수 있습니다. MLflow를 지원하는 타사 라이브러리(run_name예: Hugging Face Transformers)의 매개 변수를 사용하여mlflow.start_run(run_name="your-custom-name")실행 이름을 사용자 지정할 수 있습니다. 그렇지 않으면 기본 실행 이름은 .입니다jobTaskRun-xxxxx.from transformers import TrainingArguments args = TrainingArguments( report_to="mlflow", run_name="llama7b-sft-lr3e5", # <-- MLflow run name logging_steps=50, )서버리스 GPU API는 MLflow 실험을 시작하여 시스템 메트릭을 기록합니다. 기본적으로 사용자가 환경 변수
/Users/{WORKSPACE_USER}/{get_notebook_name()}로 덮어쓰지 않는 한 이름을MLFLOW_EXPERIMENT_NAME사용합니다.- 환경 변수를
MLFLOW_EXPERIMENT_NAME설정할 때 절대 경로를 사용합니다. 예를 들면 다음과 같습니다/Users/<username>/my-experiment. - 실험 이름에는 기존 폴더 이름이 포함되어서는 안됩니다. 예를 들어 기존 폴더인 경우
my-experiment위의 예제에서 오류가 발생합니다.
import os from serverless_gpu import distributed os.environ['MLFLOW_EXPERIMENT_NAME'] = '/Users/{WORKSPACE_USER}/my_experiment' @distributed(gpus=num_gpus, gpu_type=gpu_type, remote=True) def run_train(): # my training code- 환경 변수를
이전 실행에서 학습을 다시 시작하려면 다음과 같이 이전 실행의 MLFLOW_RUN_ID 지정합니다.
import os os.environ[‘MLFLOW_RUN_ID’] = <previous_run_id> run_train.distributed()
다중 사용자 공동 작업
- 모든 사용자가 공유 코드(예: 헬퍼 모듈, environment.yaml)에 액세스할 수 있도록
/Workspace/Repos또는/Workspace/Shared에 git 폴더를 만들고, 사용자별 폴더/Workspace/Users/<your_email>/에는 만들지 마세요. - 현재 개발 중인 코드의 경우 사용자별 폴더의 Git 폴더를
/Workspace/Users/<your_email>/사용하고 원격 Git 리포지토리에 푸시합니다. 이렇게 하면 여러 사용자가 사용자별 클론(및 분기)을 가질 수 있지만 버전 제어를 위해 원격 Git 리포지토리를 계속 사용할 수 있습니다. Databricks에서 Git을 사용하는 모범 사례를 참조하세요. - 공동 작업자는 전자 필기장을 공유하고 주석을 달 수 있습니다.
Databricks의 전역 제한
리소스 한도를 참조하세요.