Con ataque a una amplia tono de IA generativa modelos básicos (FM) y la capacidad de construir y entrenar sus propios modelos de formación inevitable (ML) en Amazon SageMakerlos usuarios quieren una forma fluida y segura de sufrir y escoger los modelos que brinden el maduro valencia para su negocio. En las etapas iniciales de un esquema de formación inevitable, los científicos de datos colaboran estrechamente y comparten resultados experimentales para topar los desafíos comerciales. Sin retención, realizar un seguimiento de numerosos experimentos, sus parámetros, métricas y resultados puede resultar difícil, especialmente cuando se trabaja en proyectos complejos simultáneamente. flujo mluna popular utensilio de código despejado, ayuda a los científicos de datos a organizar, rastrear y analizar experimentos de formación inevitable e inteligencia químico generativa, lo que facilita la reproducción y comparación de resultados.
SageMaker es un servicio de ML integral y totalmente administrado diseñado para proporcionar a los científicos de datos y a los ingenieros de ML las herramientas que necesitan para manejar todo el flujo de trabajo de ML. Amazon SageMaker con MLflow es una capacidad de SageMaker que permite a los usuarios crear, establecer, analizar y comparar sus experimentos de ML sin problemas. Simplifica las tareas, a menudo complejas y que requieren mucho tiempo, involucradas en la configuración y compañía de un entorno MLflow, lo que permite a los administradores de ML establecer rápidamente entornos MLflow seguros y escalables en AWS. Ver MLFlow totalmente administrado en Amazon SageMaker para más detalles.
Seguridad mejorada: AWS VPC y AWS PrivateLink
Cuando trabaja con SageMaker, puede arriesgarse el nivel de ataque a Internet que desea proporcionar a sus usuarios. Por ejemplo, puede otorgar permiso de ataque a los usuarios para descargar paquetes populares y personalizar el entorno de progreso. Sin retención, esto todavía puede introducir riesgos potenciales de ataque no competente a sus datos. Para mitigar estos riesgos, puede restringir aún más qué tráfico puede alcanzar a Internet iniciando su entorno de formación inevitable en un Nimbo privada supuesto de Amazon (Amazon VPC). Con una VPC de Amazon, puede controlar el ataque a la red y la conectividad a Internet de su entorno SageMaker, o incluso eliminar el ataque directo a Internet para asociar otra capa de seguridad. Ver Conéctese a SageMaker a través de un punto final de interfaz VPC para comprender las implicaciones de ejecutar SageMaker interiormente de una VPC y las diferencias al utilizar el aislamiento de red.
SageMaker con MLflow ahora es compatible Enlace privado de AWSque le permite transferir datos críticos desde su VPC a Servidores de seguimiento de MLflow a través de un punto final de VPC. Esta capacidad restablecimiento la protección de la información confidencial al asegurar que los datos enviados a los servidores de seguimiento de MLflow se transfieran interiormente de la red de AWS, evitando la exposición a la Internet pública. Esta capacidad está arreglado en todas las regiones de AWS donde SageMaker está arreglado actualmente, excepto las regiones de China y las regiones de GovCloud (EE. UU.). Para obtener más información, consulte Conéctese a un servidor de seguimiento de MLflow a través de un punto final de Interface VPC.
En esta publicación de blog, demostramos un caso de uso para configurar un fabricante de salvia entorno en un VPC privada (sin ataque a Internet), mientras usa flujo ml capacidades para acelerar la experimentación de ML.
Descripción caudillo de la opción
Puede encontrar el código de narración para este ejemplo en GitHub. Los pasos de parada nivel son los siguientes:
- Implementar infraestructura con Kit de progreso de abundancia de AWS (AWS CDK) incluido:
- Ejecute la experimentación de ML con MLflow usando el @interiorista remoto del código despejado SDK de Python de SageMaker.
La cimentación caudillo de la opción se muestra en la subsiguiente figura.
Para su narración, este publicación de blog demuestra una opción para crear una VPC sin conexión a Internet utilizando un Formación en la abundancia de AWS plantilla.
Requisitos previos
Necesita una cuenta de AWS con una Rol de AWS Identity and Access Management (IAM) con permisos para establecer los posibles creados como parte de la opción. Para más detalles, consulte Crear una cuenta de AWS.
Implemente infraestructura con AWS CDK
El primer paso es crear la infraestructura utilizando esta pila de CDK. Puede seguir las instrucciones de implementación desde el LÉAME.
Primero echemos un vistazo más de cerca a la pila CDK.
Define varios puntos de enlace de VPC, incluido el punto de enlace de MLflow, como se muestra en el subsiguiente ejemplo:
vpc.add_interface_endpoint(
"mlflow-experiments",
service=ec2.InterfaceVpcEndpointAwsService.SAGEMAKER_EXPERIMENTS,
private_dns_enabled=True,
subnets=ec2.SubnetSelection(subnets=subnets),
security_groups=(studio_security_group)
)
Incluso intentamos restringir la Función IAM de ejecución de SageMaker para que pueda usar SageMaker MLflow solo cuando esté en la VPC correcta.
Puede restringir aún más el punto final de la VPC para MLflow adjuntando un Política de punto final de VPC.
Los usuarios fuera de la VPC pueden potencialmente conectarse a Sagemaker MLflow a través del punto final de la VPC a MLflow. Puedes asociar restricciones para que el ataque de becario a SageMaker MLflow solo está permitido desde su VPC.
studio_execution_role.attach_inline_policy(
iam.Policy(self, "mlflow-policy",
statements=(
iam.PolicyStatement(
effect=iam.Effect.ALLOW,
actions=("sagemaker-mlflow:*"),
resources=("*"),
conditions={"StringEquals": {"aws:SourceVpc": vpc.vpc_id } }
)
)
)
)
A posteriori de una implementación exitosa, debería poder ver el nuevo VPC en AWS Management Console para Amazon VPC sin ataque a Internet, como se muestra en la subsiguiente captura de pantalla.
A Dominio CodeArtifact y un Repositorio CodeArtifact con conexión externa a PyPI Incluso debe crearse, como se muestra en la subsiguiente figura, para que SageMaker pueda usarlo para descargar los paquetes necesarios sin ataque a Internet. Puede compulsar la creación del dominio y el repositorio yendo a la consola CodeArtifact. Elija «Repositorios» en «Artefactos» en el panel de navegación y verá el repositorio «pip».
Experimentación de formación inevitable con MLflow
Configuración
A posteriori de la creación de la pila CDK, una nueva Dominio SageMaker con un perfil de becario todavía debería crearse. Inicie Amazon SageMaker Studio y crear un espacio JupyterLab. En el espacio JupyterLab, elija un tipo de instancia de ml.t3.medium
y seleccione una imagen con SageMaker Distribution 2.1.0
.
Para compulsar que el entorno SageMaker no tiene conexión a Internet, bahía el espacio JupyterLab y verifique la conexión a Internet ejecutando el rizo comando en una terminal.
SageMaker con MLflow ahora es compatible con la lectura MLflow 2.16.2
para acelerar los flujos de trabajo generativos de IA y ML desde la experimentación hasta la producción. Un flujo de formación inevitable 2.16.2
El servidor de seguimiento se crea adjunto con la pila CDK.
Puedes encontrar el Nombre de petición de Amazon (ARN) del servidor de seguimiento de MLflow ya sea desde la salida del CDK o desde la interfaz de becario de SageMaker Studio haciendo clic en el icono «MLFlow», como se muestra en la subsiguiente figura. Puede hacer clic en el mando «copiar» adjunto al «servidor mlflow» para copiar el ARN del servidor de seguimiento de MLflow.
Como conjunto de datos de ejemplo para entrenar el maniquí, descargue el conjunto de datos de narración del notorio Repositorio de formación inevitable de UC Irvine a su PC lugar y asígnele un nombre predictive_maintenance_raw_data_header.csv
.
Cargue el conjunto de datos de narración desde su PC lugar a su JupyterLab Space como se muestra en la subsiguiente figura.
Para probar su conectividad privada con el servidor de seguimiento de MLflow, puede descargar el cuaderno de muestra que se cargó automáticamente durante la creación de la pila en un depósito interiormente de su cuenta de AWS. Puede encontrar el nombre de un depósito S3 en la salida del CDK, como se muestra en la subsiguiente figura.
Desde la terminal de la aplicación JupyterLab, ejecute el subsiguiente comando:
aws s3 cp --recursive ./
Ahora puedes brindar el privado-mlflow.ipynb computadora portátil.
En la primera celda, inquirir credenciales para el repositorio CodeArtifact PyPI para que SageMaker pueda usar pip del repositorio privado AWS CodeArtifact. Las credenciales caducarán en 12 horas. Asegúrese de iniciar sesión nuevamente cuando caduquen.
%%bash
AWS_ACCOUNT=$(aws sts get-caller-identity --output text --query 'Account')
aws codeartifact login --tool pip --repository pip --domain code-artifact-domain --domain-owner ${AWS_ACCOUNT} --region ${AWS_DEFAULT_REGION}
Experimentación
A posteriori de la configuración, comience la experimentación. El escena está utilizando el XGBoost Cálculo para entrenar un maniquí de clasificación binaria. Tanto el trabajo de procesamiento de datos como el uso del trabajo de entrenamiento de modelos. @interiorista remoto para que los trabajos se ejecuten en las subredes privadas y el agrupación de seguridad asociados a SageMaker desde su VPC privada.
En este caso, el interiorista @remote rebusca los títulos de los parámetros de SageMaker. archivo de configuración (config.yaml). Estos parámetros se utilizan para el procesamiento de datos y trabajos de capacitación. Definimos las subredes privadas y el agrupación de seguridad asociados a SageMaker en el archivo de configuración. Para obtener la índice completa de configuraciones admitidas para el interiorista @remote, consulte Archivo de configuración en la Tutor para desarrolladores de SageMaker.
Tenga en cuenta que especificamos en PreExecutionCommands
el aws codeartifact login
comando para señalar a SageMaker al repositorio privado de CodeAritifact. Esto es necesario para asegurar que las dependencias se puedan instalar en tiempo de ejecución. Alternativamente, puede acontecer una narración a un contenedor en su Amazon ECR a través de ImageUri
que contiene todas las dependencias instaladas.
Especificamos el agrupación de seguridad y la información de subredes en VpcConfig
.
config_yaml = f"""
SchemaVersion: '1.0'
SageMaker:
PythonSDK:
Modules:
TelemetryOptOut: true
RemoteFunction:
# role arn is not required if in SageMaker Notebook instance or SageMaker Studio
# Uncomment the following line and replace with the right execution role if in a lugar IDE
# RoleArn:
# ImageUri:
S3RootUri: s3://{bucket_prefix}
InstanceType: ml.m5.xlarge
Dependencies: ./requirements.txt
IncludeLocalWorkDir: true
PreExecutionCommands:
- "aws codeartifact login --tool pip --repository pip --domain code-artifact-domain --domain-owner {account_id} --region {region}"
CustomFileFilter:
IgnoreNamePatterns:
- "data/*"
- "models/*"
- "*.ipynb"
- "__pycache__"
VpcConfig:
SecurityGroupIds:
- {security_group_id}
Subnets:
- {private_subnet_id_1}
- {private_subnet_id_2}
"""
A continuación se explica cómo configurar un examen de MLflow similar a este.
from time import gmtime, strftime
# Mlflow (replace these values with your own, if needed)
project_prefix = project_prefix
tracking_server_arn = mlflow_arn
experiment_name = f"{project_prefix}-sm-private-experiment"
run_name=f"run-{strftime('%d-%H-%M-%S', gmtime())}"
Preprocesamiento de datos
Durante el procesamiento de datos, utilizamos el @remote
interiorista para vincular parámetros en configuración.yaml a tu preprocess
función.
Tenga en cuenta que el seguimiento de MLflow comienza desde el mlflow.start_run()
API.
El mlflow.autolog()
La API puede registrar automáticamente información como métricas, parámetros y artefactos.
puedes usar log_input()
método para registrar un conjunto de datos en el almacén de artefactos de MLflow.
@remote(keep_alive_period_in_seconds=3600, job_name_prefix=f"{project_prefix}-sm-private-preprocess")
def preprocess(df, df_source: str, experiment_name: str):
mlflow.set_tracking_uri(tracking_server_arn)
mlflow.set_experiment(experiment_name)
with mlflow.start_run(run_name=f"Preprocessing") as run:
mlflow.autolog()
columns = ('Type', 'Air temperature (K)', 'Process temperature (K)', 'Rotational speed (rpm)', 'Torque (Nm)', 'Tool wear (min)', 'Machine failure')
cat_columns = ('Type')
num_columns = ('Air temperature (K)', 'Process temperature (K)', 'Rotational speed (rpm)', 'Torque (Nm)', 'Tool wear (min)')
target_column = 'Machine failure'
df = df(columns)
mlflow.log_input(
mlflow.data.from_pandas(df, df_source, targets=target_column),
context="DataPreprocessing",
)
...
model_file_path="/opt/ml/model/sklearn_model.joblib"
os.makedirs(os.path.dirname(model_file_path), exist_ok=True)
joblib.dump(featurizer_model, model_file_path)
return X_train, y_train, X_val, y_val, X_test, y_test, featurizer_model
Ejecute el trabajo de preprocesamiento y luego vaya a la interfaz de becario de MLflow (que se muestra en la subsiguiente figura) para ver el trabajo de preprocesamiento rastreado con el conjunto de datos de entrada.
X_train, y_train, X_val, y_val, X_test, y_test, featurizer_model = preprocess(df=df,
df_source=input_data_path,
experiment_name=experiment_name)
Puede brindar una interfaz de becario de MLflow desde SageMaker Studio como se muestra en la subsiguiente figura. Haga clic en «Experimentos» en el panel de navegación y seleccione su examen.
Desde la interfaz de becario de MLflow, puede ver el trabajo de procesamiento que se acaba de ejecutar.
Incluso puede ver los detalles de seguridad en la consola de SageMaker Studio en el trabajo de capacitación correspondiente, como se muestra en la subsiguiente figura.
Entrenamiento maniquí
De forma similar al trabajo de procesamiento de datos, todavía puedes utilizar @remote
interiorista con el trabajo de formación.
Tenga en cuenta que el log_metrics()
El método envía las métricas definidas al servidor de seguimiento de MLflow.
@remote(keep_alive_period_in_seconds=3600, job_name_prefix=f"{project_prefix}-sm-private-train")
def train(X_train, y_train, X_val, y_val,
eta=0.1,
max_depth=2,
gamma=0.0,
min_child_weight=1,
verbosity=0,
objective="binary:logistic",
eval_metric="auc",
num_boost_round=5):
mlflow.set_tracking_uri(tracking_server_arn)
mlflow.set_experiment(experiment_name)
with mlflow.start_run(run_name=f"Training") as run:
mlflow.autolog()
# Creating DMatrix(es)
dtrain = xgboost.DMatrix(X_train, label=y_train)
dval = xgboost.DMatrix(X_val, label=y_val)
watchlist = ((dtrain, "train"), (dval, "validation"))
print('')
print (f'===Starting training with max_depth {max_depth}===')
param_dist = {
"max_depth": max_depth,
"eta": eta,
"gamma": gamma,
"min_child_weight": min_child_weight,
"verbosity": verbosity,
"objective": objective,
"eval_metric": eval_metric
}
xgb = xgboost.train(
params=param_dist,
dtrain=dtrain,
evals=watchlist,
num_boost_round=num_boost_round)
predictions = xgb.predict(dval)
print ("Metrics for validation set")
print('')
print (pd.crosstab(index=y_val, columns=np.round(predictions),
rownames=('Actuals'), colnames=('Predictions'), margins=True))
rounded_predict = np.round(predictions)
val_accuracy = accuracy_score(y_val, rounded_predict)
val_precision = precision_score(y_val, rounded_predict)
val_recall = recall_score(y_val, rounded_predict)
# Log additional metrics, next to the default ones logged automatically
mlflow.log_metric("Accuracy Model A", val_accuracy * 100.0)
mlflow.log_metric("Precision Model A", val_precision)
mlflow.log_metric("Recall Model A", val_recall)
from sklearn.metrics import roc_auc_score
val_auc = roc_auc_score(y_val, predictions)
mlflow.log_metric("Validation AUC A", val_auc)
model_file_path="/opt/ml/model/xgboost_model.bin"
os.makedirs(os.path.dirname(model_file_path), exist_ok=True)
xgb.save_model(model_file_path)
return xgb
Defina hiperparámetros y ejecute el trabajo de entrenamiento.
eta=0.3
max_depth=10
booster = train(X_train, y_train, X_val, y_val,
eta=eta,
max_depth=max_depth)
En la interfaz de becario de MLflow puede ver las métricas de seguimiento como se muestra en la subsiguiente figura. En la pestaña «Experimentos», vaya al trabajo «Entrenamiento» de su tarea de examen. Está en la pestaña «Descripción caudillo».
Incluso puede ver las métricas como gráficos. En la pestaña «Métricas del maniquí», puede ver las métricas de rendimiento del maniquí que se configuraron como parte del registro del trabajo de capacitación.
Con MLflow, puede registrar la información de su conjunto de datos adjunto con otras métricas secreto, como hiperparámetros y evaluación de modelos. Encuentre más detalles en la publicación del blog. Experimentación LLM con MLFlow.
Lustrar
Para desterrar, primero elimine todos los espacios y aplicaciones creados interiormente del dominio de SageMaker Studio. Luego destruya la infraestructura creada ejecutando el subsiguiente código.
cdk destroy
Conclusión
SageMaker con MLflow permite a los profesionales de ML crear, establecer, analizar y comparar experimentos de ML en AWS. Para mejorar la seguridad, SageMaker con MLflow ahora admite Enlace privado de AWS. Todas las versiones de MLflow Tracking Server, incluidas 2.16.2
Integre perfectamente con esta función, lo que permite una comunicación segura entre sus entornos de formación inevitable y los servicios de AWS sin exponer los datos a la Internet pública.
Para obtener una capa adicional de seguridad, puede configurar SageMaker Studio interiormente de su VPC privada sin ataque a Internet y ejecutar sus experimentos de formación inevitable en este entorno.
SageMaker con MLflow ahora es compatible con MLflow 2.16.2
. Configurar una instalación nueva proporciona la mejor experiencia y compatibilidad total con las funciones más recientes.
Acerca de los autores
Xiaoyu Xing es arquitecto de soluciones en AWS. La impulsa una profunda pasión por la Inteligencia Industrial (IA) y el Formación Maquinal (ML). Se esfuerza por cerrar la brecha entre estas tecnologías de vanguardia y una audiencia más amplia, capacitando a personas de diversos orígenes para que aprendan y aprovechen la IA y el formación inevitable con facilidad. Ayuda a los clientes a adoptar soluciones de IA y formación inevitable en AWS de forma segura y responsable.
Paolo Di Francesco es arquitecto senior de soluciones en Amazon Web Services (AWS). Es Doctor en Ingeniería de Telecomunicaciones y tiene experiencia en ingeniería de software. Le apasiona el formación inevitable y actualmente se centra en utilizar su experiencia para ayudar a los clientes a alcanzar sus objetivos en AWS, en particular en debates sobre MLOps. Fuera del trabajo, le gusta desafiar al fútbol y interpretar.
Tomer Shenhar es apoderado de producto en AWS. Se especializa en IA responsable, impulsado por la pasión de desarrollar soluciones de IA transparentes y éticamente sólidas.