Compartilhar via


Práticas recomendadas para computação de GPU sem servidor

Este artigo apresenta recomendações de prática recomendada para usar a computação de GPU sem servidor em seus notebooks e trabalhos.

Ao seguir essas recomendações, você aumentará a produtividade, a eficiência de custos e a confiabilidade de suas cargas de trabalho no Azure Databricks.

Usar os recursos de computação corretos

  • Use a computação de GPU sem servidor. Essa opção vem com torch, cuda e torchvision otimizados para compatibilidade. As versões exatas do pacote dependerão das versões do ambiente.
  • Selecione o seu acelerador no painel lateral do ambiente.
    • Para cargas de trabalho de treinamento distribuído remoto, use uma GPU A10 como cliente para posteriormente enviar um trabalho ao H100 remoto.
    • Para executar grandes trabalhos interativos no próprio notebook, você pode anexar seu notebook ao H100, que ocupará 1 nó (8 GPUs H100).
  • Para evitar ocupar GPUs, você pode anexar seu notebook a um cluster de CPU para algumas operações, como executar git clone e converter DataFrame do Spark no formato MDS (Mosaic Data Shard).

Recomendações do MLflow

Para um ciclo de desenvolvimento de ML ideal, use o MLflow 3 no Databricks. Siga estas sugestões:

  • Atualize o MLflow do ambiente para a versão 3.6 ou mais recente e siga o fluxo de aprendizado profundo do MLflow no fluxo de trabalho de aprendizado profundo do MLflow 3.

  • Defina o parâmetro step em MLFlowLogger para um número razoável de lotes. O MLflow tem um limite de 10 milhões de passos métricos que podem ser registrados. Confira Limites de recursos.

  • Habilite mlflow.pytorch.autolog() se o Pytorch Lightning for usado como treinador.

  • Personalize o nome da execução do MLflow ao encapsular o código de treinamento do modelo dentro do escopo da API mlflow.start_run(). Isso fornece controle sobre o nome da execução e permite que você reinicie a partir de uma execução anterior. Você pode personalizar o nome da execução usando o parâmetro run_name em mlflow.start_run(run_name="your-custom-name") ou em bibliotecas de terceiros que dão suporte ao MLflow (por exemplo, Hugging Face Transformers). Caso contrário, o nome de execução padrão será jobTaskRun-xxxxx.

    from transformers import TrainingArguments
    args = TrainingArguments(
        report_to="mlflow",
        run_name="llama7b-sft-lr3e5",  # <-- MLflow run name
        logging_steps=50,
    )
    
  • A API de GPU sem servidor inicia um experimento do MLflow para registrar métricas do sistema. Por padrão, ele usa o nome /Users/{WORKSPACE_USER}/{get_notebook_name()} , a menos que o usuário o substitua pela variável MLFLOW_EXPERIMENT_NAMEde ambiente.

    • Ao definir a MLFLOW_EXPERIMENT_NAME variável de ambiente, use um caminho absoluto. Por exemplo,/Users/<username>/my-experiment
    • O nome do experimento não deve conter o nome da pasta existente. Por exemplo, se my-experiment for uma pasta existente, o exemplo acima fará um erro.
    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
    
  • Para retomar o treinamento de uma execução anterior, especifique o MLFLOW_RUN_ID da execução anterior da seguinte maneira.

    import os
    os.environ[‘MLFLOW_RUN_ID’] = <previous_run_id>
    run_train.distributed()
    

Colaboração com vários usuários

  • Para garantir que todos os usuários possam acessar o código compartilhado (por exemplo, módulos auxiliares, environment.yaml), crie pastas git em /Workspace/Repos ou /Workspace/Shared em vez de pastas específicas do usuário, como /Workspace/Users/<your_email>/.
  • Para o código que está em desenvolvimento ativo, use diretórios Git em pastas específicas /Workspace/Users/<your_email>/ do usuário e faça push para repositórios Git remotos. Isso permite que vários usuários tenham um clone (e branch) específicos do usuário, mas ainda usem um repositório Git remoto para controle de versão. Consulte as práticas recomendadas para usar o Git no Databricks.
  • Os colaboradores podem compartilhar e comentar em blocos de anotações.

Limites globais no Databricks

Confira Limites de recursos.