Importando modelos para um espaço de implementação

Importe modelos de aprendizado de máquina que foram treinados fora do ambiente de execução do IBM watsonx.ai para que você possa implantá-los e testá-los. Revise as estruturas de modelo que estão disponíveis para importar modelos.

Aqui, importar um modelo treinado significa:

  1. Armazene o modelo treinado em seu repositório de tempo de execução watsonx.ai
  2. Opcional: Implante o modelo armazenado em seu serviço watsonx.ai Runtime

e repository significa um depósito do Cloud Object Storage Para obter mais informações, consulte Criando espaços de implementação..

É possível importar um modelo destas maneiras:

Para obter mais informações, consulte:

Para obter um exemplo de como incluir um modelo programaticamente usando o cliente Python, consulte este bloco de notas:

Maneiras disponíveis de importar modelos por tipo de estrutura

Esta tabela lista as maneiras disponíveis de importar modelos para o watsonx.ai Runtime, por tipo de estrutura.

Importar opções para modelos, por tipo de estrutura
Opção Importar Spark MLlib Scikit-learn XGBoost TensorFlow PyTorch
Importando um objeto modelo
Importar um modelo usando um caminho para um arquivo
Importar um modelo usando um caminho para um diretório

Incluindo um modelo usando a UI

Nota:

Se desejar importar um modelo no formato PMML, será possível importar diretamente o arquivo .xml do modelo..

Para importar um modelo usando UI:

  1. Na guia Assets (Ativos ) do seu espaço no watsonx.ai Runtime, clique em Import assets (Importar ativos).
  2. Vá para Arquivo local e selecione Modelo
  3. Selecione o arquivo de modelo que você deseja importar e clique em Importar

O mecanismo de importação seleciona automaticamente um tipo de modelo correspondente e uma especificação de software com base na cadeia de versão no arquivo .xml

Importando um objeto modelo

Nota:

Esse método de importação é suportado por um número limitado de estruturas de ML Para obter mais informações, consulte maneiras disponíveis de importar modelos, por tipo de estrutura

Para importar um objeto modelo:

  1. Se seu modelo estiver localizado em um local remoto, siga Fazendo download de um modelo que está armazenado em um local remoto.
  2. Armazene o objeto de modelo em seu repositório de tempo de execução watsonx.ai. Para obter mais informações, consulte Armazenamento de modelo no repositório de tempo de execução watsonx.ai.

Como importar um modelo usando um caminho para um arquivo

Nota:

Esse método de importação é suportado por um número limitado de estruturas de ML Para obter mais informações, consulte maneiras disponíveis de importar modelos, por tipo de estrutura

Para importar um modelo usando um caminho para um arquivo:

  1. Se o seu modelo estiver localizado em um local remoto, siga Baixando um modelo que é armazenado em um local remoto para baixá-lo.

  2. Se o modelo for local, coloque-o em um diretório específico:

      !cp <saved model> <target directory>
      !cd <target directory>
    
  3. Para os modelos scikit-learn, XGBoost, Tensorflow e PyTorch, se o arquivo transferido por download não for um archive .tar.gz, crie um archive:

      !tar -zcvf <saved model>.tar.gz <saved model>
    

    O arquivo de modelo deve estar na pasta de nível superior do diretório, por exemplo:

    assets/
    <saved model>
    variables/
    variables/variables.data-00000-of-00001
    variables/variables.index
    
  4. Use o caminho do arquivo salvo para armazenar o arquivo de modelo no repositório do watsonx.ai Runtime. Para obter mais informações, consulte Armazenamento de modelo no repositório de tempo de execução watsonx.ai.

Como importar um modelo usando um caminho para um diretório

Nota:

Esse método de importação é suportado por um número limitado de estruturas de ML Para obter mais informações, consulte maneiras disponíveis de importar modelos, por tipo de estrutura

Para importar um modelo usando um caminho para um diretório:

  1. Se o seu modelo estiver localizado em um local remoto, consulte Fazendo download de um modelo armazenado em um local remoto.

  2. Se o modelo for local, coloque-o em um diretório específico:

    !cp <saved model> <target directory>
    !cd <target directory>
    

    Para modelos scikit-learn, XGBoost, Tensorflowe PyTorch , o arquivo de modelo deve estar na pasta de nível superior do diretório, por exemplo:

    assets/
    <saved model>
    variables/
    variables/variables.data-00000-of-00001
    variables/variables.index
    
  3. Use o caminho do diretório para armazenar o arquivo de modelo em seu repositório de tempo de execução watsonx.ai. Para obter mais informações, consulte Armazenamento de modelo no repositório de tempo de execução watsonx.ai.

Fazendo download de um modelo armazenado em um local remoto

Siga este código de amostra para fazer o download do modelo de um local remoto:

import os
from wget import download

target_dir = '<target directory name>'
if not os.path.isdir(target_dir):
    os.mkdir(target_dir)
filename = os.path.join(target_dir, '<model name>')
if not os.path.isfile(filename):
    filename = download('<url to model>', out = target_dir)

Coisas a considerar ao importar modelos

Para saber mais sobre a importação de um tipo de modelo específico, consulte:

Para saber mais sobre as estruturas que você pode usar com o watsonx.ai Runtime, consulte Estruturas suportadas.

Modelos salvos no formato PMML

  • O único tipo de implementação disponível para modelos que são importados do PMML é a implementação online.
  • O arquivo PMML deve ter a extensão .xml .
  • Os modelos PMML não podem ser usados em um fluxo de transmissão do SPSS.
  • O arquivo PMML não deve conter um prólogo. Dependendo da biblioteca que você está usando ao salvar seu modelo, um prolog pode ser incluído no início do arquivo por padrão Por exemplo, se o seu arquivo contém uma sequência de caracteres de prólogo como spark-mllib-lr-model-pmml.xml, remova a sequência de caracteres antes de importar o arquivo PMML para o espaço de implementação.

Dependendo da biblioteca que você está usando ao salvar seu modelo, um prolog pode ser incluído no início do arquivo por padrão, como neste exemplo:

::::::::::::::
spark-mllib-lr-model-pmml.xml
::::::::::::::

Você deve remover esse prólogo antes de importar o arquivo PMML para o watsonx.ai Runtime.

Modelos Spark MLlib

  • Apenas modelos de classificação e regressão estão disponíveis.
  • Transformadores customizados, funções definidas pelo usuário e classes não estão disponíveis.

Scikit-modelos de aprendizagem

  • .pkl e .pickle são os formatos de importação disponíveis.
  • Para serializar ou selecionar o modelo, use o pacote joblib
  • Apenas modelos de classificação e regressão estão disponíveis.
  • O tipo de entrada do Quadro de Dados Pandas para a API predict() não está disponível.
  • O único tipo de implementação disponível para modelos scikit-learn é a implementação on-line.

Modelos XGBoost

  • .pkl e .pickle são os formatos de importação disponíveis.
  • Para serializar ou selecionar o modelo, use o pacote joblib
  • Apenas modelos de classificação e regressão estão disponíveis.
  • O tipo de entrada do Quadro de Dados Pandas para a API predict() não está disponível.
  • O único tipo de implementação disponível para modelos XGBoost é a implementação online.

Modelos TensorFlow

  • .pb, .h5e .hdf5 são os formatos de importação disponíveis..
  • Para salvar ou serializar um modelo de TensorFlow , use o método tf.saved_model.save()
  • O tf.estimator não está disponível
  • Os únicos tipos de implementação disponíveis para modelos TensorFlow são: implementação on-line e implementação em lote.

Modelos de PyTorch

  • O único tipo de implementação disponível para modelos PyTorch é a implementação on-line.

  • Para que um modelo Pytorch possa ser importado para o watsonx.ai Runtime, ele deve ser previamente exportado para o formato ' .onnx. Consulte este código.

    torch.onnx.export(<model object>, <prediction/training input data>, "<serialized model>.onnx", verbose=True, input_names=<input tensor names>, output_names=<output tensor names>)
    

Armazenamento de um modelo em seu repositório de tempo de execução watsonx.ai

Use esse código para armazenar seu modelo no repositório de tempo de execução watsonx.ai:

from ibm_watson_machine_learning import APIClient

client = APIClient(<your credentials>)
sw_spec_uid = client.software_specifications.get_uid_by_name("<software specification name>")

meta_props = {
    client.repository.ModelMetaNames.NAME: "<your model name>",
    client.repository.ModelMetaNames.SOFTWARE_SPEC_UID: sw_spec_uid,
    client.repository.ModelMetaNames.TYPE: "<model type>"}

client.repository.store_model(model=<your model>, meta_props=meta_props)

Notas:

  • Dependendo da estrutura de modelo usada, <your model> pode ser o objeto modelo real, um caminho completo para um arquivo de modelo salvo ou um caminho para um diretório no qual o arquivo de modelo está localizado. Para obter mais informações, consulte maneiras disponíveis de importar modelos, por tipo de estrutura

  • Para obter uma lista de especificações de software disponíveis para usar como <software specification name>, use o método client.software_specifications.list().

  • Para obter uma lista de tipos de modelos disponíveis para usar como model_type, consulte Especificações de software e especificações de hardware para implementações.

  • Quando você exportar um modelo do Pytorch para o formato ' .onnx, especifique o sinalizador ' keep_initializers_as_inputs=True e defina ' opset_version como 9 (as implantações de tempo de execução 'watsonx.ai usam o tempo de execução ONNX ' caffe2 que não é compatível com versões de opset superiores a 9).

    torch.onnx.export(net, x, 'lin_reg1.onnx', verbose=True, keep_initializers_as_inputs=True, opset_version=9)