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.
Al iniciar un trabajo de entrenamiento de modelos, Neptune ML utiliza automáticamente la información inferida del trabajo de procesamiento de datos anterior. Utiliza la información para generar rangos de configuración de hiperparámetros que se utilizan para crear un trabajo de ajuste de hiperparámetros de SageMaker IA para entrenar varios modelos para su tarea. De esta forma, no es necesario especificar una larga lista de valores de hiperparámetros para los modelos con los que se va a entrenar. En cambio, los rangos de hiperparámetros y los valores predeterminados del modelo se seleccionan en función del tipo de tarea, el tipo de gráfico y la configuración del trabajo de ajuste.
Sin embargo, también puede anular la configuración predeterminada de los hiperparámetros y proporcionar hiperparámetros personalizados. Para ello, modifique un archivo de configuración de JSON que genera el trabajo de procesamiento de datos.
Con la API de modelTraining de Neptune ML, puede controlar varias configuraciones de trabajos de ajuste de hiperparámetros de alto nivel, como, por ejemplo, maxHPONumberOfTrainingJobs
, maxHPOParallelTrainingJobs
y trainingInstanceType
. Para un control más detallado de los hiperparámetros de los modelos, puede personalizar el archivo model-HPO-configuration.json
que genera el trabajo de procesamiento de datos. El archivo se guarda en la ubicación de Amazon S3 que especificó para la salida del trabajo de procesamiento.
Puede descargar el archivo, editarlo para anular las configuraciones de hiperparámetros predeterminadas y volver a cargarlo en la misma ubicación de Amazon S3. No cambie el nombre del archivo y asegúrese de seguir estas instrucciones al editarlo.
Para descargar el archivo de Amazon S3:
aws s3 cp \ s3://
(bucket name)
/(path to output folder)
/model-HPO-configuration.json \ ./
Cuando haya terminado de editarlo, vuelva a cargar el archivo donde estaba:
aws s3 cp \ model-HPO-configuration.json \ s3://
(bucket name)
/(path to output folder)
/model-HPO-configuration.json
Estructura del archivo model-HPO-configuration.json
El archivo model-HPO-configuration.json
especifica el modelo que se va a entrenar, la opción task_type
del machine learning y los hiperparámetros que deben modificarse o fijarse para las distintas ejecuciones de entrenamiento del modelo.
Los hiperparámetros se clasifican como pertenecientes a varios niveles, lo que indica la prioridad que se da a los hiperparámetros cuando se invoca el trabajo de ajuste de hiperparámetros:
Los hiperparámetros de nivel 1 tienen la prioridad más alta. Si se establece
maxHPONumberOfTrainingJobs
en un valor inferior a 10, solo se ajustan los hiperparámetros de nivel 1 y el resto toma sus valores predeterminados.Los hiperparámetros de nivel 2 tienen una prioridad inferior, por lo que si tiene más de 10 pero menos de 50 trabajos de entrenamiento en total para un trabajo de ajuste, se ajustarán los hiperparámetros de nivel 1 y 2.
Los hiperparámetros de nivel 3 se ajustan junto con los de nivel 1 y 2 solo si tiene más de 50 trabajos de formación en total.
Por último, los hiperparámetros fijos no se ajustan en absoluto y siempre toman sus valores predeterminados.
Ejemplo de un archivo model-HPO-configuration.json
A continuación se muestra un archivo model-HPO-configuration.json
de ejemplo:
{
"models": [
{
"model": "rgcn",
"task_type": "node_class",
"eval_metric": {
"metric": "acc"
},
"eval_frequency": {
"type": "evaluate_every_epoch",
"value": 1
},
"1-tier-param": [
{
"param": "num-hidden",
"range": [16, 128],
"type": "int",
"inc_strategy": "power2"
},
{
"param": "num-epochs",
"range": [3,30],
"inc_strategy": "linear",
"inc_val": 1,
"type": "int",
"node_strategy": "perM"
},
{
"param": "lr",
"range": [0.001,0.01],
"type": "float",
"inc_strategy": "log"
}
],
"2-tier-param": [
{
"param": "dropout",
"range": [0.0,0.5],
"inc_strategy": "linear",
"type": "float",
"default": 0.3
},
{
"param": "layer-norm",
"type": "bool",
"default": true
}
],
"3-tier-param": [
{
"param": "batch-size",
"range": [128, 4096],
"inc_strategy": "power2",
"type": "int",
"default": 1024
},
{
"param": "fanout",
"type": "int",
"options": [[10, 30],[15, 30], [15, 30]],
"default": [10, 15, 15]
},
{
"param": "num-layer",
"range": [1, 3],
"inc_strategy": "linear",
"inc_val": 1,
"type": "int",
"default": 2
},
{
"param": "num-bases",
"range": [0, 8],
"inc_strategy": "linear",
"inc_val": 2,
"type": "int",
"default": 0
}
],
"fixed-param": [
{
"param": "concat-node-embed",
"type": "bool",
"default": true
},
{
"param": "use-self-loop",
"type": "bool",
"default": true
},
{
"param": "low-mem",
"type": "bool",
"default": true
},
{
"param": "l2norm",
"type": "float",
"default": 0
}
]
}
]
}
Elementos de un archivo model-HPO-configuration.json
El archivo incluye un objeto de JSON con una única matriz de nivel superior denominado models
que incluye un único objeto de configuración de modelo. Al personalizar el archivo, asegúrese de que la matriz de models
solo tenga un objeto de configuración de modelo. Si el archivo incluye más de un objeto de configuración de modelo, se producirá un error en el trabajo de ajuste y aparecerá una advertencia.
El objeto de configuración de modelo incluye los siguientes elementos de nivel superior:
-
model
: (cadena) el tipo de modelo que se va a entrenar (no lo modifique). Los valores válidos son:"rgcn"
: este es el valor predeterminado para las tareas de clasificación y regresión de nodos y para las tareas heterogéneas de predicción de enlaces."transe"
: este es el valor predeterminado para las tareas de predicción de enlaces de KGE."distmult"
: este es un tipo de modelo alternativo para las tareas de predicción de enlaces de KGE."rotate"
: este es un tipo de modelo alternativo para las tareas de predicción de enlaces de KGE.
Por regla general, no modifique directamente el valor de
model
, ya que los diferentes tipos de modelos suelen tener hiperparámetros aplicables bastante diferentes, lo que puede provocar un error de análisis una vez iniciado el trabajo de entrenamiento.Para cambiar el tipo de modelo, utilice el parámetro
modelName
de la API de modelTraining en lugar de cambiarlo en el archivomodel-HPO-configuration.json
.Una forma de cambiar el tipo de modelo y realizar cambios detallados en los hiperparámetros consiste en copiar la plantilla predeterminada de configuración del modelo para el modelo que desee usar y pegarla en el archivo
model-HPO-configuration.json
. Hay una carpeta con el nombrehpo-configuration-templates
en la misma ubicación de Amazon S3 que el archivomodel-HPO-configuration.json
si el tipo de tarea inferido admite varios modelos. Esta carpeta incluye todas las configuraciones predeterminadas de hiperparámetros para los demás modelos que se aplican a la tarea.Por ejemplo, si desea cambiar las configuraciones del modelo y de los hiperparámetros de una tarea de predicción de enlaces de
KGE
del modelo predeterminadotranse
a un modelodistmult
, simplemente pegue el contenido del archivohpo-configuration-templates/distmult.json
en el archivomodel-HPO-configuration.json
y, a continuación, edite los hiperparámetros según sea necesario.nota
Si establece el parámetro
modelName
en la API demodelTraining
y también cambia la opciónmodel
y la especificación del hiperparámetro en el archivomodel-HPO-configuration.json
, y estos son diferentes, el valormodel
del archivomodel-HPO-configuration.json
tendrá prioridad y se omitirámodelName
. -
task_type
: (cadena) el tipo de tarea de machine learning inferido o transferido directamente al trabajo de procesamiento de datos (no lo modifique). Los valores válidos son:"node_class"
"node_regression"
"link_prediction"
El trabajo de procesamiento de datos infiere el tipo de tarea examinando las propiedades del conjunto de datos exportado y el archivo de configuración del trabajo de entrenamiento generado.
Este valor no debe modificarse. Si desea entrenar otra tarea, debe ejecutar un nuevo trabajo de procesamiento de datos. Si el valor
task_type
no es el que esperaba, debe comprobar las entradas del trabajo de procesamiento de datos para asegurarse de que sean correctas. Esto incluye los parámetros de la API demodelTraining
y del archivo de configuración del trabajo de entrenamiento generado por el proceso de exportación de datos. -
eval_metric
: (cadena) la métrica de evaluación debe usarse para evaluar el rendimiento del modelo y seleccionar el modelo con mejor rendimiento en todas las ejecuciones de HPO. Los valores válidos son:"acc"
: precisión de clasificación estándar. Este es el valor predeterminado para las tareas de clasificación de una sola etiqueta, a menos que se encuentren etiquetas desequilibradas durante el procesamiento de los datos, en cuyo caso el valor predeterminado es"F1"
."acc_topk"
: el número de veces que la etiqueta correcta figura entre las principales predicciones dek
. Para establecer el valork
, también puede proporcionar el valortopk
como clave adicional."F1"
: el valor F1. "mse"
: métrica de error cuadrático medio, para tareas de regresión. "mrr"
: métrica de rango recíproco medio. "precision"
: la precisión del modelo, calculada como la proporción entre los positivos verdaderos y los positivos pronosticados:= true-positives / (true-positives + false-positives)
."recall"
: la exhaustividad del modelo, calculada como la proporción entre los positivos verdaderos y los positivos pronosticados:= true-positives / (true-positives + false-negatives)
."roc_auc"
: el área debajo de la curva ROC. Este es el valor predeterminado para la clasificación de varias etiquetas.
Por ejemplo, para cambiar la métrica a
F1
, cambie el valoreval_metric
de la siguiente manera:" eval_metric": { "metric": "F1", },
O bien, si desea cambiar la métrica a una puntuación de precisión
topk
, debería cambiar el valoreval_metric
de la siguiente manera:"eval_metric": { "metric": "acc_topk", "topk": 2 },
-
eval_frequency
: (objeto) especifica con qué frecuencia se debe comprobar el rendimiento del modelo en el conjunto de validación durante el entrenamiento. En función del rendimiento de la validación, se puede iniciar una detención temprana y guardar el mejor modelo.El objeto
eval_frequency
incluye dos elementos:"type"
y"value"
. Por ejemplo:"eval_frequency": { "type": "evaluate_every_pct", "value": 0.1 },
Los valores válidos de
type
son:-
evaluate_every_pct
: especifica el porcentaje de entrenamiento que debe completarse en cada evaluación.En el caso de
evaluate_every_pct
, el campo"value"
incluye un número de coma flotante entre cero y uno que expresa ese porcentaje. -
evaluate_every_batch
: especifica el número de lotes entrenamiento que debe completarse en cada evaluación.En el caso de
evaluate_every_batch
, el campo"value"
incluye un número entero que expresa el recuento de lotes. -
evaluate_every_epoch
: especifica el número de épocas por evaluación, donde una nueva época comienza a medianoche.En el caso de
evaluate_every_epoch
, el campo"value"
incluye un número entero que expresa el recuento de épocas.
El ajuste predeterminado de
eval_frequency
es:"eval_frequency": { "type": "evaluate_every_epoch", "value": 1 },
-
-
1-tier-param
: (obligatorio) una matriz de hiperparámetros de nivel 1.Si no desea ajustar ningún hiperparámetro, puede hacerlo en una matriz vacía. Esto no afecta al número total de trabajos de formación iniciados por el trabajo de ajuste de hiperparámetros de la SageMaker IA. Tan solo significa que todos los trabajos de entrenamiento, si hay más de 1 pero menos de 10, se ejecutarán con el mismo conjunto de hiperparámetros.
Por otro lado, si desea tratar todos los hiperparámetros ajustables con la misma importancia, puede colocar todos los hiperparámetros en esta matriz.
-
2-tier-param
: (obligatorio) una matriz de hiperparámetros de nivel 2.Estos parámetros solo se ajustan si la opción
maxHPONumberOfTrainingJobs
tiene un valor superior a 10. De lo contrario, se fijan a los valores predeterminados.Si tiene un presupuesto de entrenamiento de un máximo de 10 trabajos de entrenamiento o no quiere hiperparámetros de nivel 2 por algún otro motivo, pero desea ajustar todos los hiperparámetros ajustables, puede hacerlo en una matriz vacía.
-
3-tier-param
: (obligatorio) una matriz de hiperparámetros de nivel 3.Estos parámetros solo se ajustan si la opción
maxHPONumberOfTrainingJobs
tiene un valor superior a 50. De lo contrario, se fijan a los valores predeterminados.Si no desea ajustar los hiperparámetros de nivel 3, puede hacerlo en una matriz vacía.
-
fixed-param
: (obligatorio) una matriz de hiperparámetros fijos que solo toman sus valores predeterminados y no varían en los distintos trabajos de entrenamiento.Si desea modificar todos los hiperparámetros, puede hacerlo en una matriz vacía y establecer el valor para
maxHPONumberOfTrainingJobs
lo suficientemente grande como para modificar todos los niveles o hacer que todos los hiperparámetros sean de nivel 1.
El objeto de JSON que representa cada hiperparámetro de 1-tier-param
, 2-tier-param
, 3-tier-param
y fixed-param
incluye los siguientes elementos:
-
param
: (cadena) el nombre del hiperparámetro (no lo modifique).Consulte la lista de nombres de hiperparámetros válidos en Neptune ML.
-
type
: (cadena) el tipo del hiperparámetro (no lo modifique).Los tipos válidos son
bool
,int
yfloat
. -
default
: (cadena) El valor predeterminado del hiperparámetro.Puede establecer un nuevo valor predeterminado.
Los hiperparámetros ajustables también pueden incluir los siguientes elementos:
-
range
: (matriz) el rango de un hiperparámetro ajustable continuo.Debe ser una matriz con dos valores, es decir, el mínimo y el máximo del rango (
[min, max]
). -
options
: (matriz) las opciones de un hiperparámetro ajustable categórico.Esta matriz debe incluir todas las opciones que se deben tener en cuenta:
"options" : [value1, value2, ... valuen]
-
inc_strategy
: (cadena) el tipo de cambio incremental para rangos de hiperparámetros ajustables continuos (no lo modifique).Los valores válidos son
log
,linear
ypower2
. Esto solo se aplica cuando se establece la clave de rango.Si se modifica, es posible que no se utilice todo el rango del hiperparámetro para el ajuste.
-
inc_val
: (flotante) la diferencia entre los incrementos sucesivos de los hiperparámetros ajustables continuo (no lo modifique).Esto solo se aplica cuando se establece la clave de rango.
Si se modifica, es posible que no se utilice todo el rango del hiperparámetro para el ajuste.
-
node_strategy
: (cadena) indica que el rango efectivo de este hiperparámetro debe cambiar en función del número de nodos del gráfico (no lo modifique).Los valores válidos son
"perM"
(por millón),"per10M"
(por 10 millones) y"per100M"
(por 100 millones).En lugar de cambiar este valor, cambie la opción
range
. -
edge_strategy
: (cadena) indica que el rango efectivo de este hiperparámetro debe cambiar en función del número de bordes del gráfico (no lo modifique).Los valores válidos son
"perM"
(por millón),"per10M"
(por 10 millones) y"per100M"
(por 100 millones).En lugar de cambiar este valor, cambie la opción
range
.
Lista de todos los hiperparámetros de Neptune ML
En la siguiente lista se incluyen todos los hiperparámetros que se pueden configurar en cualquier lugar de Neptune ML, para cualquier tipo de modelo y tarea. Como no todos son aplicables a todos los tipos de modelo, es importante que solo establezca los hiperparámetros en el archivo model-HPO-configuration.json
que aparece en la plantilla del modelo que esté utilizando.
-
batch-size
: el tamaño del lote de nodos de destino que se utilizan en un pase hacia adelante. Tipo:int
.Si se establece en un valor mucho mayor, se pueden producir problemas de memoria durante el entrenamiento en instancias de GPU.
-
concat-node-embed
: indica si se debe obtener la representación inicial de un nodo concatenando sus características procesadas con incrustaciones de nodos iniciales que se puedan aprender con el fin de aumentar la expresividad del modelo. Tipo:bool
. -
dropout
: la probabilidad de abandono aplicada a las capas de abandono. Tipo:float
. -
edge-num-hidden
: el tamaño de la capa oculta o el número de unidades del módulo de características de borde. Solo se usa cuando el valoruse-edge-features
está establecido enTrue
. Tipo: flotante. -
enable-early-stop
: cambia si se utiliza o no la característica de detención temprana. Tipo:bool
. Valor predeterminado:true
.Utilice este parámetro booleano para desactivar la característica de detención temprana.
-
fanout
: el número de vecinos que se deben muestrear para un nodo de destino durante el muestreo de vecinos. Tipo:int
.Este valor está estrechamente relacionado con el mismo nivel de hiperparámetros
num-layers
y siempre debe estar en el mismo. Esto se debe a que puede especificar una distribución ramificada para cada posible capa de GNN.Como este hiperparámetro puede hacer que el rendimiento del modelo varíe considerablemente, debe ser fijo o establecerse como un hiperparámetro de nivel 2 o 3. Si se establece en un valor grande se pueden producir problemas de memoria durante el entrenamiento en instancias de GPU.
-
gamma
: el valor del margen de la función de puntuación. Tipo:float
.Esto se aplica únicamente a los modelos de predicción de enlaces de
KGE
. -
l2norm
: el valor de decadencia de ponderación utilizado en el optimizador, que impone una penalización de normalización L2 a las ponderaciones. Tipo:bool
. -
layer-norm
: indica si se debe utilizar la normalización de capas para los modelosrgcn
. Tipo:bool
. -
low-mem
: indica si se debe utilizar una implementación con poca memoria de la función de transferencias de mensajes de relación en detrimento de la velocidad. Tipo:bool
. -
lr
: la tasa de aprendizaje. Tipo:float
.Debe configurarse como un hiperparámetro de nivel 1.
-
neg-share
: en la predicción de enlaces, indica si los bordes muestreados positivos pueden compartir ejemplos de bordes negativos. Tipo:bool
. -
num-bases
: el número de bases para la descomposición de bases en un modelorgcn
. El uso de un valor denum-bases
que sea inferior al número de tipos de bordes del gráfico actúa como regularizador del modelorgcn
. Tipo:int
. -
num-epochs
: el número de épocas del entrenamiento que se va a ejecutar. Tipo:int
.Una época es un recorrido completo de entrenamiento por el gráfico.
-
num-hidden
: el tamaño de la capa oculta o el número de unidades. Tipo:int
.Esto también establece el tamaño de incrustación inicial para los nodos sin características.
Si se establece en un valor mucho mayor sin reducirlo,
batch-size
se pueden producir out-of-memory problemas al entrenar en una instancia de GPU. -
num-layer
: el número de capas GNN en el modelo. Tipo:int
.Este valor está estrechamente relacionado con el parámetro de distribución ramificada y debe aparecer después de que la distribución ramificada se establezca en la misma capa de hiperparámetro.
Dado que esto puede hacer que el rendimiento del modelo varíe considerablemente, debe ser fijo o establecerse como un hiperparámetro de nivel 2 o 3.
-
num-negs
: en la predicción de enlaces, el número de muestras negativas por muestra positiva. Tipo:int
. -
per-feat-name-embed
: indica si se debe incrustar cada característica transformándola de forma independiente antes de combinar características. Tipo:bool
.Si se establece en
true
, cada característica por nodo se transforma de forma independiente en un tamaño de dimensión fijo antes de que todas las características transformadas del nodo se concatenen y se transformen posteriormente en la dimensiónnum_hidden
.Cuando se establece en
false
, las características se concatenan sin ninguna transformación específica de la característica. -
regularization-coef
: en la predicción de enlaces, el coeficiente de pérdida de regularización. Tipo:float
. -
rel-part
: indica si se debe utilizar la partición de relaciones para la predicción de enlaces deKGE
. Tipo:bool
. -
sparse-lr
: la tasa de aprendizaje de las incrustaciones de nodos que se pueden aprender. Tipo:float
.Las incrustaciones de nodos iniciales que se pueden aprender se utilizan para los nodos sin características o cuando esté establecida la opción
concat-node-embed
. Los parámetros de la capa de incrustación de nodos dispersos que se pueden aprender se entrenan mediante un optimizador independiente que puede tener una tasa de aprendizaje diferente. -
use-class-weight
: indica si se deben aplicar ponderaciones de clase a las tareas de clasificación desequilibradas. Si se establece entrue
, los recuentos de etiquetas se utilizan para establecer una ponderación para cada etiqueta de clase. Tipo:bool
. -
use-edge-features
: indica si se deben utilizar las características de borde al transferir los mensajes. Si se establece entrue
, se añade un módulo de características de borde personalizado a la capa RGCN para los tipos de bordes que tienen características. Tipo:bool
. -
use-self-loop
: indica si se deben incluir bucles automáticos en el entrenamiento de un modelorgcn
. Tipo:bool
. -
window-for-early-stop
: controla el número de puntuaciones de validación más recientes para obtener una media con el fin de decidir si se debe detener antes de tiempo. El valor predeterminado es 3. type=int. Véase también Detención temprana del proceso de entrenamiento de modelos en Neptune ML. Tipo:int
. Valor predeterminado:3
.Consulte .
Personalización de hiperparámetros en Neptune ML
Al editar el archivo model-HPO-configuration.json
, los tipos de cambios más habituales que hay que realizar son los siguientes:
Edite los valores mínimo o máximo para de los hiperparámetros
range
.Para establecer un hiperparámetro en un valor fijo, muévalo a la sección
fixed-param
y establezca su valor predeterminado en el valor fijo que desee que adquiera.Para cambiar la prioridad de un hiperparámetro, colóquelo en un determinado nivel, edite su rango y asegúrese de que su valor predeterminado esté establecido de forma adecuada.