Pular para o conteúdo principal

Legado MLflow servindo modelo on Databricks

info

Visualização

Esse recurso está em Public Preview.

important
  • Essa documentação foi descontinuada e pode não estar atualizada. O produto, serviço ou tecnologia mencionados neste conteúdo não são mais suportados.
  • As orientações contidas neste artigo são para o Legacy MLflow servindo modelo. Databricks recomenda que o senhor migre seu modelo servindo fluxo de trabalho para o modelo servindo para o modelo aprimorado endpoint implantação e escalabilidade. Para obter mais informações, consulte modelos implantados usando Mosaic AI Model Serving.

O legado MLflow servindo modelo permite que o senhor hospede o modelo de aprendizado de máquina de Model Registry como endpoint REST que são atualizados automaticamente com base na disponibilidade das versões do modelo e seus estágios. Ele usa um clustering de nó único que executa sob seu próprio account dentro do que agora é chamado de plano clássico compute. Esse plano compute inclui a rede virtual e seus recursos compute associados, como clustering para Notebook e Job, warehouse pro e classic SQL e endpoint Legacy servindo modelo.

Quando o senhor ativa o servindo modelo para um determinado modelo registrado, o site Databricks cria automaticamente um clustering exclusivo para o modelo e implanta todas as versões não arquivadas do modelo nesse clustering. Databricks reinicia o clustering se ocorrer um erro e encerra o clustering quando o senhor desativa o servindo modelo para o modelo. servindo modelo sincroniza automaticamente com Model Registry e implanta qualquer nova versão de modelo registrada. As versões do modelo implantado podem ser consultadas com uma solicitação padrão da API REST. O Databricks autentica as solicitações ao modelo usando sua autenticação padrão.

Enquanto esse serviço está em fase de pré-visualização, o site Databricks recomenda seu uso para aplicativos de baixa taxa de transferência e não críticos. A taxa de transferência desejada é de 200 qps e a disponibilidade desejada é de 99,5%, embora nenhuma garantia seja feita em relação a isso. Além disso, há um limite de tamanho de carga útil de 16 MB por solicitação.

Cada versão do modelo é implantada usando a implantação MLflow e a execução do modelo em um Conda ambiente especificado por suas dependências.

nota
  • O clustering é mantido enquanto o serviço estiver ativado, mesmo que não exista uma versão ativa do modelo. Para encerrar o clustering de serviço, desative o modelo de serviço para o modelo registrado.
  • O clustering é considerado um clusters todo-propósito, sujeito a preços de carga de trabalho todo-propósito.
  • Os scripts de inicialização global não são executados no modelo de clustering de serviço.
important

A Anaconda Inc. atualizou seus termos de serviço para o canal anaconda.org. Com base nos novos termos de serviço, o senhor pode precisar de uma licença comercial se depender do empacotamento e da distribuição do Anaconda. Para obter mais informações, consulte as Perguntas frequentes sobre o Anaconda Commercial Edition. Seu uso de qualquer canal do Anaconda é regido pelos termos de serviço.

MLflow Os registros de modelos anteriores à v1.18 (Databricks Runtime 8.3 ML ou anterior) eram por registros default com o canal conda defaults (https://repo.anaconda.com/pkgs/) como uma dependência. Devido a essa alteração de licença, o site Databricks interrompeu o uso do canal defaults para registros de modelos que usam MLflow v1.18 e acima. Os registros do canal default agora são conda-forge, que apontam para a comunidade gerenciar https://conda-forge.org/.

Se o senhor fizer o logon de um modelo antes de MLflow v1.18 sem excluir o canal defaults do ambiente conda para o modelo, esse modelo poderá ter uma dependência do canal defaults que o senhor talvez não tenha pretendido. Para confirmar manualmente se um modelo tem essa dependência, o senhor pode examinar o valor channel no arquivo conda.yaml que é empacotado com os modelos registrados. Por exemplo, o site conda.yaml de um modelo com uma dependência de canal defaults pode ter a seguinte aparência:

YAML
channels:
- defaults
dependencies:
- python=3.8.8
- pip
- pip:
- mlflow
- scikit-learn==0.23.2
- cloudpickle==1.6.0
name: mlflow-env

Como a Databricks não pode determinar se o uso do repositório do Anaconda para interagir com seus modelos é permitido de acordo com seu relacionamento com o Anaconda, a Databricks não está forçando seus clientes a fazer nenhuma alteração. Se o seu uso do repositório Anaconda.com por meio do uso do Databricks for permitido de acordo com os termos do Anaconda, o senhor não precisará tomar nenhuma medida.

Se quiser alterar o canal usado no ambiente de um modelo, o senhor pode registrar novamente o modelo no registro de modelo com um novo conda.yaml. O senhor pode fazer isso especificando o canal no parâmetro conda_env de log_model().

Para obter mais informações sobre log_model() API, consulte a documentação MLflow da variante de modelo com a qual o senhor está trabalhando, por exemplo, os logs de scikit-learn.

Para obter mais informações sobre arquivos conda.yaml, consulte a documentaçãoMLflow.

Requisitos

servindo modelo de Model Registry

A servindo modelo está disponível em Databricks a partir de Model Registry.

Ativar e desativar o modelo de serviço

Você habilita um modelo para servir a partir de sua página de modelo registrada.

  1. Clique em Serving tab. Se o modelo ainda não estiver habilitado para servir, o botão Ativar serviço será exibido.

    Ativar botão de servir

  2. Clique em Ativar serviço . O site Serving tab é exibido com o status mostrado como Pending. Depois de alguns minutos, o Status muda para Pronto.

Para desativar um modelo para servir, clique em Parar .

Validar o modelo de serviço

No Serving tab, o senhor pode enviar uma solicitação ao modelo atendido e view a resposta.

Habilitar o serviço

URIs da versão do modelo

Cada versão do modelo implantado recebe um ou vários URIs exclusivos. No mínimo, cada versão do modelo recebe um URI construído da seguinte forma:

<databricks-instance>/model/<registered-model-name>/<model-version>/invocations

Por exemplo, para chamar a versão 1 de um modelo registrado como iris-classifier, use este URI:

https://<databricks-instance>/model/iris-classifier/1/invocations

Você também pode chamar uma versão do modelo por estágio. Por exemplo, se a versão 1 estiver na fase de produção , ela também poderá ser pontuada usando este URI:

https://<databricks-instance>/model/iris-classifier/Production/invocations

A lista de URIs de modelo disponíveis é exibida na parte superior da página de serviço Model Versions tab.

gerenciar versões servidas

Todas as versões ativas (não arquivadas) do modelo são implantadas, e o senhor pode consultá-las usando os URIs. Databricks implanta automaticamente novas versões de modelos quando elas são registradas e remove automaticamente as versões antigas quando elas são arquivadas.

nota

Todas as versões implantadas de um modelo registrado compartilham o mesmo clustering.

Gerenciar direitos de acesso ao modelo

Os direitos de acesso ao modelo são herdados do Model Registry. A ativação ou desativação do recurso de veiculação requer a permissão "gerenciar" no modelo registrado. Qualquer pessoa com direitos de leitura pode marcar qualquer uma das versões implantadas.

Versões do modelo Score implantado

Para pontuar um modelo implantado, o senhor pode usar a interface do usuário ou enviar uma solicitação de API REST para o URI do modelo.

Pontuação via UI

Essa é a maneira mais fácil e rápida de testar o modelo. O senhor pode inserir os dados de entrada do modelo no formato JSON e clicar em Send Request (Enviar solicitação) . Se o modelo tiver sido registrado com um exemplo de entrada (como mostrado no gráfico acima), clique em Load Example (Carregar exemplo ) para carregar o exemplo de entrada.

Pontuação via solicitação de API REST

O senhor pode enviar uma solicitação de pontuação por meio da API REST usando a autenticação padrão do Databricks. Os exemplos abaixo demonstram a autenticação usando tokens de acesso pessoal com MLflow 1.x.

nota

Como prática recomendada de segurança, ao se autenticar com ferramentas, sistemas, scripts e aplicativos automatizados, o Databricks recomenda que o senhor use o acesso pessoal tokens pertencente à entidade de serviço em vez dos usuários do workspace. Para criar tokens o site para uma entidade de serviço, consulte gerenciar tokens para uma entidade de serviço.

Dado um MODEL_VERSION_URI como https://<databricks-instance>/model/iris-classifier/Production/invocations (em que <databricks-instance> é o nome da sua instância Databricks) e um Databricks REST API tokens chamado DATABRICKS_API_TOKEN, os exemplos a seguir mostram como consultar um modelo atendido:

Os exemplos a seguir refletem o formato de pontuação para modelos criados com o MLflow 1.x. Se preferir usar o MLflow 2.0, o senhor precisará atualizar o formato da carga útil da solicitação.

Snippet to query a model accepting dataframe inputs.

Bash
curl -X POST -u token:$DATABRICKS_API_TOKEN $MODEL_VERSION_URI \
-H 'Content-Type: application/json' \
-d '[
{
"sepal_length": 5.1,
"sepal_width": 3.5,
"petal_length": 1.4,
"petal_width": 0.2
}
]'

Snippet to query a model accepting tensor inputs. Tensor inputs should be formatted as described in TensorFlow Serving’s API docs.

Bash
curl -X POST -u token:$DATABRICKS_API_TOKEN $MODEL_VERSION_URI \
-H 'Content-Type: application/json' \
-d '{"inputs": [[5.1, 3.5, 1.4, 0.2]]}'

Monitore modelos atendidos

A página de serviço exibe indicadores de status para o clustering de serviço, bem como versões de modelos individuais.

  • Para inspecionar o estado do clustering de atendimento, use o Model Events tab, que exibe uma lista de todos os eventos de atendimento para esse modelo.
  • Para inspecionar o estado de uma única versão do modelo, clique em Model Versions (Versões do modelo ) tab e role até view a guia Logs (Registros ) ou Version Events (Eventos da versão ).

Servindo tab

Personalizar o clustering de serviço

Para personalizar o clustering de serviço, use as Configurações de clustering tab no Serving tab .

configurações de agrupamento

  • Para modificar o tamanho da memória e o número de núcleos de um clustering de serviço, use o menu suspenso Instance Type (Tipo de instância ) para selecionar a configuração de clustering desejada. Quando o senhor clica em Salvar , o clustering existente é encerrado e um novo clustering é criado com as configurações especificadas.
  • Para adicionar uma tag, digite o nome e o valor nos campos Adicionar tag e clique em Adicionar .
  • Para editar ou excluir uma tag existente, clique em um dos ícones na coluna Ações da tabela Tags .

Erros conhecidos

ResolvePackageNotFound: pyspark=3.1.0

Esse erro pode ocorrer se um modelo depender de pyspark e for registrado usando Databricks Runtime 8.x. Se você ver esse erro, especifique a versão pyspark explicitamente ao registrar o modelo, usando o parâmetroconda_env.

Unrecognized content type parameters: format

Esse erro pode ocorrer como resultado do novo formato de protocolo de pontuação do MLflow 2.0. Se você estiver vendo esse erro, provavelmente está usando um formato de solicitação de pontuação desatualizado. Para resolver o erro, você pode:

  • Atualize seu formato de solicitação de pontuação para o protocolo mais recente.
nota

Os exemplos a seguir refletem o formato de pontuação introduzido no MLflow 2.0. Se preferir usar o MLflow 1.x, o senhor pode modificar suas chamadas à API log_model() para incluir a dependência da versão desejada do MLflow no parâmetro extra_pip_requirements. Isso garante que o formato de pontuação apropriado seja usado.

Python
    mlflow.<flavor>.log_model(..., extra_pip_requirements=["mlflow==1.*"])

Query a model accepting pandas dataframe inputs.

Bash
curl -X POST -u token:$DATABRICKS_API_TOKEN $MODEL_VERSION_URI \
-H 'Content-Type: application/json' \
-d '{
"dataframe_records": [{"sepal_length (cm)": 5.1, "sepal_width (cm)": 3.5, "petal_length (cm)": 1.4, "petal_width": 0.2},
{"sepal_length (cm)": 4.2, "sepal_width (cm)": 5.0, "petal_length (cm)": 0.8, "petal_width": 0.5}]
}'

Query a model accepting tensor inputs. Tensor inputs should be formatted as described in TensorFlow Serving’s API docs.

Bash
curl -X POST -u token:$DATABRICKS_API_TOKEN $MODEL_VERSION_URI \
-H 'Content-Type: application/json' \
-d '{"inputs": [[5.1, 3.5, 1.4, 0.2]]}'

Para obter mais informações sobre os formatos de dados de entrada aceitos pelo servidor (por exemplo, o formato orientado por divisão do Pandas ), consulte a documentação doMLflow.