Preparación de un artefacto del modelo
Después de entrenar un modelo, debe crear un artefacto de modelo para guardarlo con el modelo en un catálogo de modelos.
Esto crea un almacenamiento centralizado de artefactos de modelo para realizar un seguimiento de los metadatos del modelo.
Un artefacto de modelos es un archivo zip de los archivos necesarios para desplegar el modelo como un despliegue de modelos o volver a cargarlo en una sesión de Notebook.
Hemos proporcionado varios ejemplos de catálogo de modelos que incluyen artefactos de modelo para varios marcos de aprendizaje automático y formatos de modelo. Tenemos ejemplos para los modelos ONNX, Scikit-learn, Keras, PyTorch, LightGBM y XGBoost. Para comenzar, obtenga nuestra plantilla de artefacto de modelo, que incluye los siguientes archivos:
Archivo | Descripción |
---|---|
score.py |
Contiene la lógica personalizada para cargar objetos de modelo serializados en la memoria y definir un punto final de inferencia (predict() ). |
runtime.yaml |
Proporciona instrucciones sobre qué entorno conda utilizar al desplegar el modelo mediante un despliegue de modelo de Data Science. |
README.md |
Ofrece una serie de instrucciones paso a paso para preparar y guardar un artefacto de modelo en el catálogo de modelos. Recomendamos encarecidamente que siga estos pasos. |
artifact-introspection-test/requirements.txt |
Muestra las dependencias de terceros que debe instalar en el entorno local antes de ejecutar pruebas de introspección. |
artifact-introspection-test/model_artifact_validate.py |
Proporciona una serie opcional de definiciones de prueba que puede ejecutar en el artefacto de modelo antes de guardarlo en el catálogo de modelos. Estas pruebas de introspección de modelo capturan muchos de los errores más comunes al preparar un artefacto de modelo. |
La estructura del directorio de artefactos del modelo debe coincidir con el siguiente ejemplo:
.
|-- runtime.yaml
|-- score.py
|--<your-serialized-model>
|--<your-custom-module.py>
Más módulos de Python que se importan en score.py
. Recomendamos que cualquier código utilizado para la inferencia se comprima en el mismo nivel que score.py
o en cualquier nivel del archivo. Si hay archivos necesarios en niveles de carpeta que preceden al archivo score.py
, los archivos se ignoran y pueden provocar un fallo de despliegue.
Archivo score.py
Este archivo contiene las definiciones de función necesarias para cargar un modelo en la memoria y realizar predicciones.
Las dos funciones se denominan load_model()
y predict()
. Los parámetros de la función no se pueden personalizar. Por ejemplo, puede definir transformaciones de datos en predict()
antes de llamar al método de inferencia del objeto de estimador. Puede cargar más de un objeto de estimador en la memoria y realizar una evaluación de conjunto. La función predict()
está detrás del punto final /predict
de un despliegue de modelo. Asegúrese de que el tipo de dato del parámetro data
en predict()
coincida con el formato de carga útil que espera con el despliegue del modelo.
El despliegue del modelo solo soporta la carga útil y los bytes de JSON. Asegúrese de que el parámetro de datos en predict()
es un blob de JSON o bytes.
ADS (oracle-ads
) proporciona clases específicas de la estructura de registro de modelo. Por ejemplo, si la clase SklearnModel
se utiliza con .prepare()
, por defecto ADS serializa el modelo en joblib. Cuando se utiliza XgboostModel
, por defecto .prepare()
guarda el modelo en un archivo JSON.
La plantilla score.py
utiliza load_model()
para devolver el objeto de estimador de modelo. La función predict()
toma los datos y el objeto de modelo devuelto por load_model()
. Ambas funciones son personalizables y requieren definiciones. El cuerpo de predict()
puede incluir transformaciones de datos y otras tareas de manipulación de datos antes de realizar una predicción de modelo. Cualquier módulo de Python personalizado se puede importar en score.py
si está disponible en el archivo de artefacto o como parte del entorno conda utilizado para fines de inferencia, como la plantilla.
Puede definir otras funciones auxiliares en score.py
que se llaman en predict()
. Por ejemplo, puede definir una función data_transformation()
que defina transformaciones personalizadas.
Revise las Mejores prácticas para artefactos del modelo para ayudarle a crear de forma eficaz estos archivos.
Hemos proporcionado varios ejemplos y plantillas del catálogo de modelos, incluidos los archivos score.py
. Tenemos ejemplos para los modelos ONNX, scikit-learn, Keras, PyTorch, LightGBM y XGBoost.