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.
SageMaker Piscinas calientes gestionadas
SageMaker Las piscinas calientes gestionadas le permiten conservar y reutilizar la infraestructura aprovisionada después de completar un trabajo de formación para reducir la latencia de las cargas de trabajo repetitivas, como la experimentación iterativa o la ejecución de muchos trabajos de forma consecutiva. Los trabajos de entrenamiento posteriores que coincidan con los parámetros especificados se ejecutan en la infraestructura de grupos de calentamiento retenidos, lo que acelera los tiempos de inicio al reducir el tiempo dedicado a aprovisionar los recursos.
importante
SageMaker Las piscinas calientes gestionadas son un recurso facturable. Para obtener más información, consulte Facturación.
Temas
Funcionamiento
Para utilizar piscinas calientes SageMaker gestionadas y reducir la latencia entre trabajos de formación consecutivos similares, cree un trabajo de formación que especifique un KeepAlivePeriodInSeconds
valor en suResourceConfig
. Este valor representa el tiempo en segundos que se tarda en retener los recursos configurados en un grupo de calentamiento para los siguientes trabajos de entrenamiento. Si necesita ejecutar varios trabajos de entrenamiento con configuraciones similares, puede reducir aún más la latencia y el tiempo facturable utilizando un directorio de caché persistente dedicado para almacenar y reutilizar la información en un trabajo diferente.
Temas
Ciclo de vida de un grupo
-
Cree un trabajo de entrenamiento inicial con un valor
KeepAlivePeriodInSeconds
superior a 0. Al ejecutar este primer trabajo de entrenamiento, se “pone en marcha en frío” un clúster con tiempos de inicio típicos. -
Cuando se completa el primer trabajo de entrenamiento, los recursos aprovisionados se mantienen activos en un grupo de calentamiento durante el período especificado en el valor
KeepAlivePeriodInSeconds
. Mientras el clúster esté en buen estado y el grupo de calentamiento se encuentre dentro de los valores especificadosKeepAlivePeriodInSeconds
, el estado del grupo de calentamiento esAvailable
. -
El grupo de calentamiento permanece
Available
hasta que identifique un trabajo de entrenamiento adecuado para su reutilización o supere losKeepAlivePeriodInSeconds
especificados y finalice. El tiempo máximo permitido paraKeepAlivePeriodInSeconds
es de 3600 segundos (60 minutos). Si el estado del grupo de calentamiento esTerminated
, entonces este es el final del ciclo de vida del grupo de calentamiento. -
Si el grupo de calentamiento identifica un segundo trabajo de entrenamiento con especificaciones coincidentes, como el número de instancias o el tipo de instancia, el grupo de calentamiento pasa del primer trabajo de entrenamiento al segundo trabajo de entrenamiento para su reutilización. El estado del primer grupo de calentamiento del trabajo de entrenamiento pasa a ser
Reused
. Este es el final del ciclo de vida del grupo de calentamiento para el primer trabajo de entrenamiento. -
El estado del segundo trabajo de entrenamiento en el que se reutilizó el grupo de calentamiento pasa a ser
InUse
. Una vez finalizado el segundo trabajo de entrenamiento, el grupo de calentamiento estáAvailable
para duranteKeepAlivePeriodInSeconds
especificado en el segundo trabajo de entrenamiento. Un grupo de calentamiento puede continuar desplazándose a los siguientes trabajos de entrenamiento coincidentes durante un máximo de 28 días. -
Si el grupo de calentamiento ya no está disponible para su reutilización, el estado del grupo de calentamiento es
Terminated
. Los grupos de calentamiento dejarán de estar disponibles si un usuario los cierra, si se actualiza un parche o si se superan losKeepAlivePeriodInSeconds
especificados.
Para obtener más información sobre las opciones de estado de una piscina caliente, consulta WarmPoolStatusAmazon SageMaker API Reference.
Creación de un grupo de calentamiento
Si un trabajo de entrenamiento inicial se completa correctamente y tiene un valor KeepAlivePeriodInSeconds
superior a 0, se crea un grupo de calentamiento. Si detiene un trabajo de entrenamiento después de que se haya lanzado un clúster, se retendrá un grupo de calentamiento. Si el trabajo de entrenamiento falla debido a un error del algoritmo o del cliente, se retendrá un grupo de calentamiento. Si el trabajo de entrenamiento falla por cualquier otro motivo que pueda comprometer el estado del clúster, no se crea el grupo de calentamiento.
Para comprobar que la creación de un grupo de calentamiento se ha realizado correctamente, compruebe el estado del grupo de calentamiento de su trabajo de entrenamiento. Si un grupo de calentamiento se aprovisiona correctamente, el estado del grupo de calentamiento es Available
. Si un grupo de calentamiento no se aprovisiona, el estado del grupo de calentamiento es Terminated
.
Emparejar trabajos de entrenamiento
Para que un grupo de calentamiento persista, debe encontrar un trabajo de entrenamiento adecuado en el tiempo especificado en el valor KeepAlivePeriodInSeconds
. El siguiente trabajo de entrenamiento coincide si los valores siguientes son idénticos:
-
RoleArn
-
Valores
ResourceConfig
:-
InstanceCount
-
InstanceType
-
VolumeKmsKeyId
-
VolumeSizeInGB
-
-
Valores
VpcConfig
:-
SecurityGroupIds
-
Subnets
-
-
EnableInterContainerTrafficEncryption
-
EnableNetworkIsolation
-
Si has pasado las etiquetas de sesión de tu trabajo de formación con el
EnableSessionTagChaining
valor ATrue
en el trabajo de formaciónSessionChainingConfig
, entonces un trabajo de formación coincidente también debe estar configurado con claves de sesión idénticasTrue
yEnableSessionTagChaining
tener las mismas claves de sesión. Para obtener más información, consulte Utilice el control de acceso basado en atributos (ABAC) para la formación de usuarios múltiples.
Todos estos valores deben ser los mismos para que un grupo de calentamiento pase a un trabajo de entrenamiento posterior para su reutilización.
Duración máxima de un grupo de calentamiento
Los KeepAlivePeriodInSeconds
máximospara un solo trabajo de entrenamiento es de 3600 segundos (60 minutos) y el tiempo máximo que un grupo de grupos ce calentamiento puede continuar realizando trabajos de entrenamiento consecutivos es de 28 días.
Cada trabajo de entrenamiento posterior también debe especificar un valor KeepAlivePeriodInSeconds
. Cuando el grupo de calentamiento pasa al siguiente trabajo de entrenamiento, hereda el nuevo valor KeepAlivePeriodInSeconds
especificado en ese ResourceConfig
del trabajo de entrenamiento. De esta forma, puede mantener un grupo de calentamiento desplazándose de un trabajo de entrenamiento a otro durante un máximo de 28 días.
Si no se especifica KeepAlivePeriodInSeconds
, el grupo de calentamiento gira hacia abajo una vez que se complete el trabajo de entrenamiento.
Uso de caché persistente
Al crear una piscina caliente, SageMaker monta un directorio especial en el volumen que se mantendrá durante todo el ciclo de vida de la piscina caliente. Este directorio también se puede usar para almacenar información que desee reutilizar en otro trabajo.
El uso de la caché persistente puede reducir la latencia y el tiempo facturable en comparación con el uso exclusivo de grupos calientes para trabajos que requieren lo siguiente:
-
interacciones múltiples con configuraciones similares
-
trabajos de entrenamiento incremental
-
Optimización de hiperparámetros
Por ejemplo, puede evitar descargar las mismas dependencias de Python en ejecuciones repetidas configurando un directorio de caché pip dentro del directorio de caché persistente. Usted es el único responsable de administrar el contenido de este directorio. Los siguientes son ejemplos de tipos de información que puede poner en su caché persistente para ayudar a reducir la latencia y el tiempo facturable.
-
Dependencias administradas por pip.
-
Dependencias administradas por conda.
-
Cualquier información adicional generada durante el entrenamiento.
La ubicación de la caché persistente es /opt/ml/sagemaker/warmpoolcache
. La variable de entorno SAGEMAKER_MANAGED_WARMPOOL_CACHE_DIRECTORY
apunta a la ubicación del directorio de caché persistente.
En el siguiente ejemplo de código, se muestra cómo configurar un grupo de calentamiento y cómo utilizar la caché persistente para almacenar las dependencias de pip y utilizarlas en un trabajo posterior. El trabajo siguiente debe ejecutarse dentro del período de tiempo indicado por el parámetro keep_alive_period_in_seconds
.
import sagemakerfrom sagemaker import get_execution_rolefrom sagemaker.tensorflow import TensorFlow # Creates a SageMaker session and gets execution role session = sagemaker.Session() role = get_execution_role() # Creates an example estimator estimator = TensorFlow( ... entry_point='
my-training-script.py
', source_dir='code
', role=role
, model_dir='model_dir
', framework_version='2.2
', py_version='py37
', job_name='my-training-job-1
', instance_type='ml.g4dn.xlarge
', instance_count=1
, volume_size=250
, hyperparameters={ "batch-size":512
, "epochs":1
, "learning-rate":1e-3
, "beta_1":0.9
, "beta_2":0.999
, }, keep_alive_period_in_seconds=1800
, environment={"PIP_CACHE_DIR": "/opt/ml/sagemaker/warmpoolcache/pip"} )
En el ejemplo de código anterior, al utilizar el parámetro environmentPIP_CACHE_DIRECTORY
para que apunte al directorio /opt/ml/sagemaker/warmpoolcache/pip
. La exportación de esta variable de environment cambiará el lugar donde pip almacena su caché en la nueva ubicación. Cualquier directorio, incluidos los directorios anidados, que cree dentro del directorio de caché persistente estará disponible para su reutilización durante una sesión de entrenamiento posterior. En el ejemplo de código anterior, un directorio llamado pip
se cambia para que sea la ubicación predeterminada para almacenar en caché cualquier dependencia instalada mediante pip.
También se puede acceder a la ubicación de la caché persistente desde el script de entrenamiento de Python mediante la variable de entorno, como se muestra en el siguiente ejemplo de código.
import os import shutil if __name__ == '__main__': PERSISTED_DIR = os.environ["SAGEMAKER_MANAGED_WARMPOOL_CACHE_DIRECTORY"] # create a file to be persisted open(os.path.join(PERSISTED_DIR, "
test.txt
"), 'a').close() # create a directory to be persisted os.mkdir(os.path.join(PERSISTED_DIR, "test_dir
")) # Move a file to be persisted shutil.move("path/of/your/file.txt
", PERSISTED_DIR)
Facturación
SageMaker Las piscinas calientes gestionadas son un recurso facturable. Consulte el estado del grupo de calentamiento para su trabajo de entrenamiento y compruebe el tiempo facturable de sus grupos de calentamiento. Puede comprobar el estado de la piscina caliente mediante el comando Uso de la SageMaker consola de Amazon o directamente mediante el DescribeTrainingJobAPIcomando. Para obtener más información, consulta WarmPoolStatusAmazon SageMaker API Reference.
nota
Una vez transcurrido el tiempo especificado por el parámetro KeepAlivePeriodInSeconds
, tanto el grupo de calentamiento como la caché persistente se cerrarán y el contenido se eliminará.
Consideraciones
Tenga en cuenta lo siguiente cuando utilice piscinas de agua caliente SageMaker gestionadas.
-
SageMaker las piscinas calientes gestionadas no se pueden utilizar con el entrenamiento en clústeres heterogéneos.
-
SageMaker las piscinas cálidas gestionadas no se pueden utilizar con instancias puntuales.
-
SageMaker las piscinas calientes gestionadas están limitadas a un
KeepAlivePeriodInSeconds
valor de 3600 segundos (60 minutos). -
Si un grupo de calentamiento sigue igualando correctamente los trabajos de entrenamiento dentro del valor
KeepAlivePeriodInSeconds
especificado, el clúster solo podrá seguir funcionando durante un máximo de 28 días.