11.4 Kserve

O KServe habilita a inferência de modelos de Machine Learning no Kubernetes e é totalmente integrado ao Kubeflow. A seguir, vamos portar o modelo de classificação de categorias visto nos capítulos anteriores para o KServe. Antes de começar os trabalhos com o modelo, precisamos configurar as credenciais para que o KServe consiga obter os artefatos no Minio. Para usar o Minio, vamos criar uma Secret com as credenciais necessárias e um Service Account para utilizarmos na subida do serviço:

apiVersion: v1
kind: Secret
metadata:
  name: s3creds
  namespace: kubeflow-user-example-com
  annotations:
    serving.kserve.io/s3-endpoint: "minio-service.kubeflow:9000"
    serving.kserve.io/s3-usehttps: "0"
    serving.kserve.io/s3-region: "us-east-1"
    serving.kserve.io/s3-useanoncredential: "false"
type: Opaque
stringData:
  AWS_ACCESS_KEY_ID: "minio"
  AWS_SECRET_ACCESS_KEY: "minio123"
  S3_USE_HTTPS: "0"
  S3_VERIFY_SSL: "0"
  S3_ENDPOINT: "minio-service.kubeflow:9000"
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: kserve-sa
  namespace: kubeflow-user-example-com
secrets:
  - name: s3creds

Crie um arquivo YAML como o do exemplo e crie os recursos com o kubectl.

Agora vamos voltar ao Notebook para treinar e efetuar o deploy do modelo. O comando a seguir prepara o cliente do KServe e do Minio.

Agora, vamos inicializar algumas variáveis de credenciais do Minio, caminhos (paths) para os modelos e o namespace padrão:

Para iniciar o cliente do Minio, precisamos inicializá-lo com as credenciais:

Para armazenar o modelo, vamos criar um bucket no Minio:

Vamos efetuar o upload do arquivo de dados no Minio para ser a entrada de dados para o treinamento do modelo. Antes de executar o comando abaixo, faça o upload do arquivo para o seu Notebook:

Agora, vamos instalar as dependências para o treinamento do modelo:

A primeira etapa é a preparação dos dados:

A segunda etapa é o treinamento do modelo:

Salvar o modelo no Minio:

Agora, vamos usar o cliente do KServe para efetuar o deploy do modelo:

Após alguns minutos, é possível consultar o servidor de inferência na interface do Kubeflow.

É possível testar a chamada do endpoint de inferência via Notebook. Mas, antes de testar o endpoint, é necessário configurar o RBAC para acesso. Para fins de teste local, iremos criar um RBAC super permissivo, mas para ambientes produtivos precisamos refinar o RBAC:

Crie o YAML do RBAC e aplique-o com o kubectl. Agora é só testar o request para o endpoint:

Nesta seção, conseguimos treinar e efetuar o deploy do modelo via Notebook Jupyter de forma fácil, usando somente componentes do Kubeflow.

Last updated