다음을 통해 공유


서버리스 GPU 컴퓨팅에 대한 모범 사례

이 문서에서는 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 딥 러닝 흐름을 따릅니다.

  • 매개 변수 stepMLFlowLogger 적절한 일괄 처리 수로 설정합니다. 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의 전역 제한

리소스 한도를 참조하세요.