Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Desarrollo de modelos personalizados en Neptune ML
Una buena forma de iniciar el desarrollo de modelos personalizados es seguir los ejemplos del kit de herramientas de Neptune ML
Además, el kit de herramientas proporciona funciones de utilidad que le ayudan a generar los artefactos necesarios durante el entrenamiento y la transformación de modelos. Puede importar este paquete de Python en la implementación personalizada. Todas las funciones o módulos incluidos en el kit de herramientas también están disponibles en el entorno de entrenamiento de Neptune ML.
Si su módulo de Python tiene dependencias externas adicionales, puede incluirlas creando un requirements.txt
archivo en el directorio del módulo. Los paquetes que figuran en el archivo requirements.txt
se instalarán antes de ejecutar el script de entrenamiento.
Como mínimo, el módulo de Python que implementa el modelo personalizado debe incluir lo siguiente:
Un punto de entrada de script de entrenamiento
Un punto de entrada de script de transformación
Un archivo
model-hpo-configuration.json
Desarrollo de scripts de entrenamiento de modelos personalizados en Neptune ML
El script de entrenamiento del modelo personalizado debe ser un script de Python ejecutable, como el ejemplo train.py
model-hpo-configuration.json
. Los valores de los hiperparámetros se encuentran dentro del rango de hiperparámetros válido si el hiperparámetro se puede ajustar, o toman el valor de hiperparámetro predeterminado si no se puede ajustar.
El script de entrenamiento se ejecuta en una instancia de entrenamiento de SageMaker con una sintaxis como la siguiente:
python3
(script entry point)
--(1st parameter)
(1st value)
--(2nd parameter)
(2nd value)
(...)
Para todas las tareas, Neptune ML AutoTrainer envía varios parámetros necesarios al script de entrenamiento, además de los hiperparámetros que especifique, y el script debe ser capaz de gestionar estos parámetros adicionales para que funcione correctamente.
Estos parámetros adicionales obligatorios varían un poco según la tarea:
Para la clasificación o la regresión de nodos
-
task
: el tipo de tarea utilizado internamente por Neptune ML. Para la clasificación de nodos, esnode_class
, y para la regresión de nodos, esnode_regression
. -
model
: el nombre del modelo utilizado internamente por Neptune ML, que escustom
en este caso. -
name
: el nombre de la tarea utilizada internamente por Neptune ML, que esnode_class-custom
para la clasificación de nodos, ynode_regression-custom
para la regresión de nodos. -
target_ntype
: el nombre del tipo de nodo para la clasificación o la regresión. -
property
: el nombre de la propiedad de nodo para la clasificación o la regresión.
Para la predicción de enlaces
-
task
: el tipo de tarea utilizado internamente por Neptune ML. Para la predicción de enlaces, eslink_predict
. -
model
: el nombre del modelo utilizado internamente por Neptune ML, que escustom
en este caso. -
name
: el nombre de la tarea utilizada internamente por Neptune ML, que eslink_predict-custom
en este caso.
Para la clasificación o la regresión de bordes
-
task
: el tipo de tarea utilizado internamente por Neptune ML. Para la clasificación de bordes, esedge_class
, y para la regresión de bordes, esedge_regression
. -
model
: el nombre del modelo utilizado internamente por Neptune ML, que escustom
en este caso. -
name
: el nombre de la tarea utilizada internamente por Neptune ML, que esedge_class-custom
para la clasificación de bordes, yedge_regression-custom
para la regresión de bordes. -
target_etype
: el nombre del tipo de borde para la clasificación o la regresión. -
property
: el nombre de la propiedad de borde para la clasificación o la regresión.
El script debe guardar los parámetros del modelo, así como cualquier otro artefacto que sea necesario al final del entrenamiento.
Puede utilizar las funciones de utilidad del kit de herramientas de Neptune ML para determinar la ubicación de los datos de gráficos procesados, la ubicación en la que deben guardarse los parámetros del modelo y qué dispositivos de GPU están disponibles en la instancia de entrenamiento. Consulte el ejemplo de script de entrenamiento train.py
Desarrollo de scripts de transformación de modelos personalizados en Neptune ML
Se necesita un script de transformación para sacar partido del flujo de trabajo incremental de Neptune ML para la inferencia de modelos en gráficos en constante evolución sin volver a entrenar el modelo. Aunque el script de entrenamiento genere todos los artefactos necesarios para la implementación del modelo, tendrá que proporcionar un script de transformación si quiere generar modelos actualizados sin volver a entrenar el modelo.
nota
Por el momento, los modelos personalizados no admiten la inferencia inductiva en tiempo real.
El script de transformación del modelo personalizado debe ser un script de Python ejecutable, como el script de ejemplo transform.py
El script se ejecuta en una instancia de entrenamiento de SageMaker con una sintaxis como la siguiente:
python3
(your transform script entry point)
El script de transformación necesitará varios datos, como, por ejemplo:
La ubicación de los datos de gráficos procesados.
La ubicación en la que se guardan los parámetros del modelo y en la que se deben guardar los nuevos artefactos del modelo.
Los dispositivos disponibles en la instancia.
Los hiperparámetros que generaron el mejor modelo.
Estas entradas se obtienen mediante las funciones de utilidad de Neptune ML a las que puede llamar el script. Consulte el ejemplo de script transform.py
El script debe guardar las incrustaciones de nodos, los mapeados de identificador de nodo y cualquier otro artefacto necesario para la implementación del modelo de cada tarea. Consulte la documentación de artefactos de modelos para obtener más información sobre los artefactos de modelos necesarios para las diferentes tareas de Neptune ML.
Archivo model-hpo-configuration.json
personalizado de Neptune ML
El archivo model-hpo-configuration.json
define los hiperparámetros para el modelo personalizado. Tiene el mismo formato que el archivo model-hpo-configuration.json
utilizado con los modelos integrados de Neptune ML y tiene prioridad con respecto a la versión que Neptune ML genera automáticamente y se carga en la ubicación de los datos procesados.
Al añadir un hiperparámetro nuevo al modelo, también debe añadir una entrada para el hiperparámetro en este archivo para que el hiperparámetro se transfiera al script de entrenamiento.
Debe proporcionar un rango para un hiperparámetro si desea que sea ajustable y configurarlo como un parámetro tier-1
, tier-2
o tier-3
. El hiperparámetro se ajustará si el número total de trabajos de entrenamiento configurados permite ajustar los hiperparámetros de su nivel. En el caso de un parámetro que no se pueda ajustar, debe proporcionar un valor predeterminado y añadir el hiperparámetro a la sección fixed-param
del archivo. Consulte el archivo model-hpo-configuration.json
de ejemplo
También debe proporcionar la definición de métrica que utilizará el trabajo de optimización de hiperparámetros de SageMaker para evaluar los modelos candidatos entrenados. Para ello, añada un objeto eval_metric
de JSON al archivo model-hpo-configuration.json
de la siguiente manera:
"eval_metric": { "tuning_objective": { "MetricName": "
(metric_name)
", "Type": "Maximize" }, "metric_definitions": [ { "Name": "(metric_name)
", "Regex": "(metric regular expression)
" } ] },
La matriz de metric_definitions
del objeto eval_metric
muestra los objetos de definición de métrica para cada métrica que desee que SageMaker extraiga de la instancia de entrenamiento. Cada objeto de definición de métrica tiene una clave Name
que le permite proporcionar un nombre a la métrica (por ejemplo, “precisión”, “f1”, etc.). La clave Regex
le permite proporcionar una cadena de expresión regular que coincide con la forma en que se imprime esa métrica en concreto en los registros de entrenamiento. Consulte la página Ajuste de hiperparámetros de SageMaker para obtener más información sobre cómo definir las métricas.
A continuación, el objeto tuning_objective
de eval_metric
le permite especificar las métricas de metric_definitions
que deben utilizarse como métrica de evaluación que sirva como métrica objetivo para la optimización de hiperparámetros. El valor de MetricName
debe coincidir con el valor de un Name
en una de las definiciones de metric_definitions
. El valor de Type
debe ser “Maximizar” o “Minimizar”, en función de si la métrica debe interpretarse como mayor es mejor (por ejemplo, “precisión”) o menor es mejor (como “error cuadrático medio”).
Los errores que se produzcan en esta sección del archivo model-hpo-configuration.json
pueden provocar errores en el trabajo de la API de entrenamiento del modelo de Neptune ML, ya que el trabajo de ajuste de hiperparámetros de SageMaker no podrá seleccionar el mejor modelo.
Pruebas locales de la implementación de un modelo personalizado en Neptune ML
Puede utilizar el entorno de Conda del kit de herramientas de Neptune ML para ejecutar el código localmente con el fin de probar y validar el modelo. Si está desarrollando en una instancia de cuaderno de Neptune, este entorno estará preinstalado en la instancia de cuaderno de Neptune. Si está desarrollando en otra instancia, debe seguir las instrucciones de configuración local
El entorno de Conda reproduce con precisión el entorno en el que se ejecutará el modelo cuando llame a la API de entrenamiento de modelos. Todos los ejemplos de scripts de entrenamiento y de transformación permiten utilizar un indicador --local
de línea de comandos para ejecutar los scripts en un entorno local y facilitar su depuración. Esta práctica se recomienda cuando tenga que desarrollar su propio modelo, ya que le permite probar la implementación del modelo de forma interactiva e iterativa. Durante el entrenamiento de modelos en el entorno de entrenamiento de producción de Neptune ML, se omite este parámetro.