As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Treine e implante um modelo de ML personalizado compatível com GPU na Amazon SageMaker
Ambiente: PoC ou piloto | Tecnologias: machine learning e IA; contêineres e microsserviços | Serviços da AWS: Amazon ECS; Amazon SageMaker |
Resumo
Treinar e implantar um modelo de machine learning (ML) compatível com unidade de processamento gráfico (GPU) requer uma configuração e inicialização iniciais de determinadas variáveis de ambiente para liberar totalmente os benefícios das GPUs NVIDIA. No entanto, pode ser demorado configurar o ambiente e torná-lo compatível com a SageMaker arquitetura da Amazon na nuvem da Amazon Web Services (AWS).
Esse padrão ajuda você a treinar e criar um modelo de ML personalizado compatível com GPU usando a Amazon. SageMaker Ele fornece etapas para treinar e implantar um CatBoost modelo personalizado construído em um conjunto de dados de avaliações de código aberto da Amazon. Em seguida, é possível comparar o desempenho em uma instância p3.16xlarge
do Amazon Elastic Compute Cloud (Amazon EC2).
Esse padrão é útil se sua organização quiser implantar modelos de ML existentes compatíveis com GPU no. SageMaker Seus cientistas de dados podem seguir as etapas desse padrão para criar contêineres compatíveis com GPU NVIDIA e implantar modelos de ML nesses contêineres.
Pré-requisitos e limitações
Pré-requisitos
Uma conta AWS ativa
Um bucket de origem do Amazon Simple Storage Service (Amazon S3) para armazenar os artefatos e as previsões do modelo.
Uma compreensão das instâncias de SageMaker notebooks e notebooks Jupyter.
Uma compreensão de como criar uma função do AWS Identity and Access Management (IAM) com permissões básicas de SageMaker função, permissões de acesso e atualização do bucket S3 e permissões adicionais para o Amazon Elastic Container Registry (Amazon ECR).
Limitações
Esse padrão é destinado a workloads de ML supervisionadas com código train-and-deploy no Python.
Arquitetura
![](images/pattern-img/2c1edce7-57ab-4057-8a47-9155dbcab0fd/images/404e28b3-28c0-4f74-b99b-465c8788ed53.png)
Pilha de tecnologia
SageMaker
Amazon ECR
Ferramentas
Ferramentas
Amazon ECR: o Amazon Elastic Container Registry (Amazon ECR) é um serviço gerenciado de registro de imagem de contêiner, seguro, escalável e confiável.
Amazon SageMaker — SageMaker é um serviço de ML totalmente gerenciado.
Docker
: o Docker é uma plataforma de software para criar, testar e implantar aplicativos rapidamente. Python
: Python é uma linguagem de programação.
Código
O código desse padrão está disponível em GitHub Implementação de um modelo de classificação de revisão com Catboost e SageMaker
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Criar um perfil do IAM e anexar as políticas necessárias. | Faça login no Console de Gerenciamento da AWS, abra o console do IAM e crie um novo perfil do IAM. Anexe as políticas a seguir ao perfil do IAM:
Para obter mais informações sobre isso, consulte Criar uma instância de notebook na SageMaker documentação da Amazon. | Cientista de dados |
Crie a instância do SageMaker notebook. | Abra o SageMaker console, escolha Instâncias do Notebook e, em seguida, escolha Criar instância do notebook. Em Perfil do IAM, selecione o perfil do IAM que você criou anteriormente. Configure a instância do bloco de anotações de acordo com seus requisitos e escolha Criar instância do bloco de anotações. Para etapas e instruções detalhadas, consulte Criar uma instância de notebook na SageMaker documentação da Amazon. | Cientista de dados |
Clonar o repositório. | Abra o terminal na instância do SageMaker notebook e clone a GitHub Implementação de um modelo de classificação de revisão com Catboost e SageMaker
| |
Inicie o servidor de caderno Jupyter. | Inicie | Cientista de dados |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Execute comandos no caderno Jupyter. | Abra o caderno Jupyter e execute os comandos dos históricos a seguir para preparar os dados para treinar seu modelo de ML. | Cientista de dados |
Ler os dados do bucket do S3. |
| Cientista de dados |
Pré-processar os dados. |
Observação: esse código substitui valores nulos no
| Cientista de dados |
Dividir os dados em conjuntos de dados de treinamento, validação e teste. |
| Cientista de dados |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Preparar e enviar para a imagem do Docker. | No caderno Jupyter, execute os comandos dos históricos a seguir para preparar a imagem do Docker e enviá-la para o Amazon ECR. | Engenheiro de ML |
Crie um repositório do Amazon ECR. |
| Engenheiro de ML |
Criar uma imagem do Docker localmente. |
| Engenheiro de ML |
Executar a imagem do Docker e enviá-la para o Amazon ECR. |
| Engenheiro de ML |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie um trabalho de ajuste de SageMaker hiperparâmetros. | No notebook Jupyter, execute os comandos das histórias a seguir para criar um trabalho de ajuste de SageMaker hiperparâmetros usando sua imagem do Docker. | Cientista de dados |
Crie um SageMaker estimador. | Crie um SageMaker estimador
| Cientista de dados |
Criar um trabalho do HPO. | Crie um trabalho de ajuste de otimização de hiperparâmetros (HPO) com intervalos de parâmetros e transmita os conjuntos de treinamento e validação como parâmetros para a função.
| Cientista de dados |
Executar o trabalho do HPO. |
| Cientista de dados |
Receber o trabalho de treinamento com melhor desempenho. |
| Cientista de dados |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie um trabalho SageMaker de transformação em lote nos dados de teste para previsão do modelo. | No notebook Jupyter, execute os comandos das histórias a seguir para criar o modelo a partir do seu trabalho de ajuste de SageMaker hiperparâmetros e enviar um trabalho de transformação em SageMaker lote nos dados de teste para previsão do modelo. | Cientista de dados |
Crie o SageMaker modelo. | Crie um modelo em SageMaker modelo usando o melhor trabalho de treinamento.
| Cientista de dados |
Criar trabalho de transformação em lote. | Crie um trabalho de transformação em lote no conjunto de dados de teste.
| Cientista de dados |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Leia os resultados e avalie o desempenho do modelo. | No caderno Jupyter, execute os comandos dos históricos a seguir para ler os resultados e avaliar o desempenho do modelo nas métricas do modelo Área abaixo da curva ROC (ROC-AUC) e Área abaixo da curva de recuperação de precisão (PR-AUC). Para obter mais informações , consulte os Principais conceitos do Amazon Machine Learning na documentação do Amazon Machine Learning (Amazon ML). | Cientista de dados |
Leia os resultados do trabalho de transformação em lote. | Leia o lote e transforme os resultados do trabalho em um quadro de dados.
| Cientista de dados |
Avaliar as métricas de performance. | Avalie o desempenho do modelo no ROC-AUC e no PR-AUC.
| Cientista de dados |
Recursos relacionados
Mais informações
A lista a seguir mostra os diferentes elementos do Dockerfile que são executados no epic Criar, executar e enviar a imagem do Docker para o Amazon ECR.
Instale o Python com aws-cli.
FROM amazonlinux:1 RUN yum update -y && yum install -y python36 python36-devel python36-libs python36-tools python36-pip && \ yum install gcc tar make wget util-linux kmod man sudo git -y && \ yum install wget -y && \ yum install aws-cli -y && \ yum install nginx -y && \ yum install gcc-c++.noarch -y && yum clean all
Instale os pacotes do Python
RUN pip-3.6 install --no-cache-dir --upgrade pip && \pip3 install --no-cache-dir --upgrade setuptools && \ pip3 install Cython && \ pip3 install --no-cache-dir numpy==1.16.0 scipy==1.4.1 scikit-learn==0.20.3 pandas==0.24.2 \ flask gevent gunicorn boto3 s3fs matplotlib joblib catboost==0.20.2
Instale CUDA e CuDNN
RUN wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_384.81_linux-run \ && chmod u+x cuda_9.0.176_384.81_linux-run \ && ./cuda_9.0.176_384.81_linux-run --tmpdir=/data --silent --toolkit --override \ && wget https://custom-gpu-sagemaker-image.s3.amazonaws.com/installation/cudnn-9.0-linux-x64-v7.tgz \ && tar -xvzf cudnn-9.0-linux-x64-v7.tgz \ && cp /data/cuda/include/cudnn.h /usr/local/cuda/include \ && cp /data/cuda/lib64/libcudnn* /usr/local/cuda/lib64 \ && chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn* \ && rm -rf /data/*
Crie a estrutura de diretórios necessária para SageMaker
RUN mkdir /opt/ml /opt/ml/input /opt/ml/input/config /opt/ml/input/data /opt/ml/input/data/training /opt/ml/model /opt/ml/output /opt/program
Defina as variáveis de ambiente NVIDIA
ENV PYTHONPATH=/opt/program ENV PYTHONUNBUFFERED=TRUE ENV PYTHONDONTWRITEBYTECODE=TRUE ENV PATH="/opt/program:${PATH}" # Set NVIDIA mount environments ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64:$LD_LIBRARY_PATH ENV NVIDIA_VISIBLE_DEVICES="all" ENV NVIDIA_DRIVER_CAPABILITIES="compute,utility" ENV NVIDIA_REQUIRE_CUDA "cuda>=9.0"
Copie arquivos de treinamento e inferência na imagem do Docker
COPY code/* /opt/program/ WORKDIR /opt/program