SageMaker is a machine learning service managed by Amazon. It’s basically a service that combines EC2, ECR and S3 all together, allowing you to train complex machine learning models quickly and easily, and then deploy the model into a production-ready hosted environment. It provides many best-in-class built-in algorithms, such as Factorization Machines, XGBoost etc. It also allows you to train models using various machine learning frameworks, such as Apache MXNet, TensorFlow, and Scikit-learn.
A straightforward way to interact with SageMaker is using the notebook Instance. This process is described in detail by Amazon (link). We use SageMaker in a slightly different way. we only want to use SageMaker for the model training part, so that we can train a complex model on a large dataset without worrying about the messy infrastructural details. But the rest of the process (e.g., data preparation, making predictions) run locally. So, in our use case, we want to:
1. Interact with SageMaker jobs from local machine, without using SageMaker notebook Instance. Why? Well, there are a few advantages:
- se tarda unos minutos en iniciar una instancia de cuaderno, lo que es lento
- a menos que detenga manualmente la instancia, siempre se le cobrará por la instancia en funcionamiento, sin importar si la está utilizando activamente o no. Por otro lado, si envía el trabajo de entrenamiento desde la máquina local, sólo se le cobrará por la parte de entrenamiento del modelo
- si el código se encuentra localmente, puedes usar tu IDE para depurar, y usar github para el control de versiones
2. Acceder al modelo entrenado localmente, para poder
- mirar los detalles del modelo, en lugar de utilizar el modelo como una caja negra
- hacer predicciones a nivel local, y utilizar el modelo a nuestra manera
El resto de este post cubrirá cómo lo hicimos en 5 pasos:
- Configure su máquina local, para que pueda interactuar con los trabajos de SageMaker localmente.
- Prepare sus datos
- Presentar el trabajo de formación
- Descargar el modelo entrenado
- Hacer predicciones a nivel local
Al final, también le mostraremos brevemente cómo utilizar el sintonizador de hiperparámetros de SageMaker que le ayuda a ajustar el modelo de aprendizaje automático.
Set up your local machine
Para interactuar con los trabajos de SageMaker de forma programática y local, necesitas instalar la API de sagemaker Python, y el SDK de AWS para python. Puedes instalarlos ejecutando pip install sagemaker boto3
The easiest way to test if your local environment is ready, is by running through a sample notebook, for example, An Introduction to Factorization Machines with MNIST. Run this sample notebook, and check if you need to install additional packages, or if any AWS credential information is missing.
Ahora que está seguro de que su máquina local está correctamente configurada para interactuar con SageMaker, entonces puede traer sus propios datos, entrenar un modelo de clasificación de Máquina de Factorización usando SageMaker, descargar el modelo y hacer predicciones. Para empezar, veamos cómo preparar sus datos para el entrenamiento.