{"id":6145,"date":"2023-07-04T17:35:57","date_gmt":"2023-07-04T22:35:57","guid":{"rendered":"https:\/\/thebitbang.company\/?p=6145"},"modified":"2023-07-04T18:13:55","modified_gmt":"2023-07-04T23:13:55","slug":"aplicando-practicas-de-mlops-con-sagemaker-parte-2","status":"publish","type":"post","link":"https:\/\/thebitbang.company\/en\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/","title":{"rendered":"Applying MLOPS practices with SageMaker \u2014 Part 2"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"6145\" class=\"elementor elementor-6145\" data-elementor-settings=\"[]\">\n\t\t\t\t\t\t<div class=\"elementor-inner\">\n\t\t\t\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-a81a633 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"a81a633\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-864a484\" data-id=\"864a484\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-97ca1cd elementor-widget elementor-widget-heading\" data-id=\"97ca1cd\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Introduction<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-acf7e0c elementor-widget elementor-widget-text-editor\" data-id=\"acf7e0c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p><\/p><p id=\"d5b9\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">In previous posts we\u2019ve been talking about MLOPS and providing some details about the architecture to deploy ML models with SageMaker. In this post we are going to cover the details to deploy our model, some topics associated with classification algorithms, publish an inference endpoint and make some API calls to make predictions.<\/p><p id=\"c616\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">Let\u2019s start by opening the SageMaker Studio and create a new project. As you can see in\u00a0<strong class=\"lk fp\">Image 1,<\/strong>\u00a0AWS provides a couple of templates for MLOPS, for this tutorial we are going to work with the option 3:\u00a0<strong class=\"lk fp\">MLOps template for model building, training, deployment and monitoring.<\/strong><\/p><p><\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7f882cf elementor-widget elementor-widget-image\" data-id=\"7f882cf\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" loading=\"lazy\" width=\"525\" height=\"292\" src=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/1-1024x570.webp\" class=\"attachment-large size-large not-transparent\" alt=\"Image 1. SageMaker Studio \u2014 Create new Project\" srcset=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/1-1024x570.webp 1024w, https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/1-300x167.webp 300w, https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/1-768x427.webp 768w, https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/1.webp 1400w\" sizes=\"(max-width: 525px) 100vw, 525px\" data-has-transparency=\"false\" data-dominant-color=\"323d4c\" style=\"--dominant-color: #323d4c\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Image 1. SageMaker Studio \u2014 Create new Project<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1cd1448 elementor-widget elementor-widget-text-editor\" data-id=\"1cd1448\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p><\/p><ol class=\"\"><li id=\"a1c3\" class=\"lr ls fo lt b lu lv lw lx ly lz ma mb mq md me mf mr mh mi mj ms ml mm mn mo mt mu mv bj\" data-selectable-paragraph=\"\"><p id=\"b49f\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">When you choose the template, SageMaker will help you to create all the resources required to train, test, deploy and monitor your model. Two new repositories will be generated in AWS code-commit, one for model building and another for model-deploy.<\/p><p id=\"b96e\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">So, lets take a look to the model-build project:<\/p><\/li><\/ol>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3b59691 elementor-widget elementor-widget-image\" data-id=\"3b59691\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" loading=\"lazy\" width=\"472\" height=\"666\" src=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/2.webp\" class=\"attachment-large size-large not-transparent\" alt=\"Image 2. Model build project structure\" srcset=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/2.webp 472w, https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/2-213x300.webp 213w\" sizes=\"(max-width: 472px) 100vw, 472px\" data-has-transparency=\"false\" data-dominant-color=\"3c3e4a\" style=\"--dominant-color: #3c3e4a\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Image 2. Model build project structure<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e7f4fe4 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e7f4fe4\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f1ba61d\" data-id=\"f1ba61d\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-85ff2f2 elementor-widget elementor-widget-text-editor\" data-id=\"85ff2f2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p><\/p><p id=\"efc6\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">Our idea is to deploy a classification algorithm. After many attempts I think the XGBoost algorithm is the solution for my classification problem, so lets recap some key elements (scripts) of the MLOPS project:<\/p><ol class=\"\"><li id=\"3e3b\" class=\"li lj fo lk b gm ll lm ln gp lo lp lq akr ls lt lu aks lw lx ly akt ma mb mc md aku akv akw bj\" data-selectable-paragraph=\"\">Evaluate.py<\/li><li id=\"eed2\" class=\"li lj fo lk b gm akx lm ln gp aky lp lq akr akz lt lu aks ala lx ly akt alb mb mc md aku akv akw bj\" data-selectable-paragraph=\"\">Preprocess.py<\/li><li id=\"dea4\" class=\"li lj fo lk b gm akx lm ln gp aky lp lq akr akz lt lu aks ala lx ly akt alb mb mc md aku akv akw bj\" data-selectable-paragraph=\"\">Pipeline.py<\/li><\/ol><p id=\"f9bd\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">The evaluate.py file helps to define, collect the model metrics and evaluate the performance of our solution, these metrics are:<\/p><ol class=\"\"><li id=\"d9ff\" class=\"li lj fo lk b gm ll lm ln gp lo lp lq akr ls lt lu aks lw lx ly akt ma mb mc md aku akv akw bj\" data-selectable-paragraph=\"\">Recall<\/li><li id=\"546a\" class=\"li lj fo lk b gm akx lm ln gp aky lp lq akr akz lt lu aks ala lx ly akt alb mb mc md aku akv akw bj\" data-selectable-paragraph=\"\">Precision<\/li><li id=\"2de1\" class=\"li lj fo lk b gm akx lm ln gp aky lp lq akr akz lt lu aks ala lx ly akt alb mb mc md aku akv akw bj\" data-selectable-paragraph=\"\">ROC AUC (Area under the ROC Curve)<\/li><\/ol><figure class=\"wz xa xb xc xd akf ahq ahr paragraph-image\"><div class=\"akg akh eb aki bg akj\" tabindex=\"0\" role=\"button\">\u00a0<\/div><\/figure><p><\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8a657cb elementor-widget elementor-widget-image\" data-id=\"8a657cb\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" loading=\"lazy\" width=\"525\" height=\"325\" src=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/3.webp\" class=\"attachment-large size-large not-transparent\" alt=\"Image 3. Classification model metrics\" srcset=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/3.webp 720w, https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/3-300x186.webp 300w\" sizes=\"(max-width: 525px) 100vw, 525px\" data-has-transparency=\"false\" data-dominant-color=\"32343d\" style=\"--dominant-color: #32343d\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Image 3. Classification model metrics<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d42bdd6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d42bdd6\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8ae648a\" data-id=\"8ae648a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-063f506 elementor-widget elementor-widget-text-editor\" data-id=\"063f506\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p><\/em><\/p><p id=\"116a\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">The preprocess.py file allows us to apply the feature engineering step, the idea behind this is to play with the data and pick the key features to train our model or even generate new ones from other features. Then the data is splitted (you should take a look to the stratified sampling technique) into the train, validation and test sets. This information is persisted in your SageMaker Instance.<\/p><p id=\"0333\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">The pipeline.py file is the place where you define the steps to process data, train, test and deploy your model. There are a couple of examples most of them related to linear regressors but let\u2019s see what you can do with a classification problem:<\/p><p id=\"d820\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">As you can see in\u00a0<strong class=\"lk fp\">Image 4<\/strong>, we are using the XGBOOST algorithm provided by AWS, The hyperparameter objetive is set to \u201cbinary:logistic\u201d (applies logistic regression for binary classification).<em class=\"nj\"><\/em><\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-48fbd03 elementor-widget elementor-widget-image\" data-id=\"48fbd03\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" loading=\"lazy\" width=\"525\" height=\"269\" src=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/4.webp\" class=\"attachment-large size-large not-transparent\" alt=\"Image 4. Model definition SageMaker Pipeline\" srcset=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/4.webp 713w, https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/4-300x154.webp 300w\" sizes=\"(max-width: 525px) 100vw, 525px\" data-has-transparency=\"false\" data-dominant-color=\"31323c\" style=\"--dominant-color: #31323c\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Image 4. Model definition SageMaker Pipeline<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-54392bb elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"54392bb\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e011d21\" data-id=\"e011d21\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-77e01d5 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"77e01d5\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8dd8833\" data-id=\"8dd8833\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-212ac9b elementor-widget elementor-widget-text-editor\" data-id=\"212ac9b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p><\/p><ol class=\"\"><li id=\"5692\" class=\"lr ls fo lt b lu lv lw lx ly lz ma mb mq md me mf mr mh mi mj ms ml mm mn mo mt mu mv bj\" data-selectable-paragraph=\"\"><p id=\"e574\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">In Image 5 you see a conditional that was added to check if the precision metric is less than 1, this is because I would verify a couple of times whether I have a model that performs perfectly for one metric. You must remember that tree of the most important metrics for binary classification problems are Precision, Recall and ROC AUC (see the bonus content at the end of the article).<\/p><p id=\"f815\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">For the ROC AUC, when you have a value of 1 is because your classifier performs perfectly and when this value is 0.5 we are talking about a pure random classifier. There is also a concept called precision vs recall trade off , this means that if you increase one of these metrics the another one is going to decrease.<\/p><p id=\"9005\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\"><em class=\"nn\">Note: take a look to your data or your model if you obtain a value equal to 1.<\/em><\/p><\/li><\/ol><p><\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e068fa7 elementor-widget elementor-widget-image\" data-id=\"e068fa7\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" loading=\"lazy\" width=\"525\" height=\"347\" src=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/5.webp\" class=\"attachment-large size-large not-transparent\" alt=\"Image 5. Conditional step to register the model after evaluating the precision metric\" srcset=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/5.webp 616w, https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/5-300x198.webp 300w\" sizes=\"(max-width: 525px) 100vw, 525px\" data-has-transparency=\"false\" data-dominant-color=\"31333c\" style=\"--dominant-color: #31333c\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Image 5. Conditional step to register the model after evaluating the precision metric<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5d3e542 elementor-widget elementor-widget-text-editor\" data-id=\"5d3e542\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p><span style=\"font-weight: 400;\"><\/p><p id=\"b7a2\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">Finally we register all the steps in our pipeline:<\/p><ol class=\"\"><li id=\"df38\" class=\"li lj fo lk b gm ll lm ln gp lo lp lq akr ls lt lu aks lw lx ly akt ma mb mc md aku akv akw bj\" data-selectable-paragraph=\"\">Process: split the data into train, validation and test sets.<\/li><li id=\"9467\" class=\"li lj fo lk b gm akx lm ln gp aky lp lq akr akz lt lu aks ala lx ly akt alb mb mc md aku akv akw bj\" data-selectable-paragraph=\"\">Train: train your model with the train and validation sets<\/li><li id=\"345e\" class=\"li lj fo lk b gm akx lm ln gp aky lp lq akr akz lt lu aks ala lx ly akt alb mb mc md aku akv akw bj\" data-selectable-paragraph=\"\">Evaluation: evaluation of your model with the test set<\/li><li id=\"dc4a\" class=\"li lj fo lk b gm akx lm ln gp aky lp lq akr akz lt lu aks ala lx ly akt alb mb mc md aku akv akw bj\" data-selectable-paragraph=\"\">Conditional step to register a new model and continue with the deployment of your staging endpoint<\/li><\/ol><p id=\"16b8\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">To deploy your changes you just need to commit your changes or click the button\u00a0<em class=\"nn\">release change<\/em>\u00a0from AWS CodePipeline (Image 6), then you will see the process to train, validate and test your model from CodePipeline and the SageMaker dashboard.<\/p><p id=\"0605\" class=\"pw-post-body-paragraph lr ls fo lt b lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo fh bj\" data-selectable-paragraph=\"\"><\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d7e4670 elementor-widget elementor-widget-image\" data-id=\"d7e4670\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" loading=\"lazy\" width=\"525\" height=\"312\" src=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/6.webp\" class=\"attachment-large size-large not-transparent\" alt=\"Image 6. CodePipeline model build pipeline execution\" srcset=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/6.webp 720w, https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/6-300x178.webp 300w\" sizes=\"(max-width: 525px) 100vw, 525px\" data-has-transparency=\"false\" data-dominant-color=\"f4f5f4\" style=\"--dominant-color: #f4f5f4\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Image 6. CodePipeline model build pipeline execution<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f2292c1 elementor-widget elementor-widget-text-editor\" data-id=\"f2292c1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p><\/p><p>If you want to check, just go to SageMaker and take a look for every step of the Pipeline in detail.<\/p><p><\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c79caf5 elementor-widget elementor-widget-image\" data-id=\"c79caf5\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" loading=\"lazy\" width=\"525\" height=\"196\" src=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/7.webp\" class=\"attachment-large size-large not-transparent\" alt=\"Image 7. SageMaker Dashboard \u2014 Model Build Process\" srcset=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/7.webp 720w, https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/7-300x112.webp 300w\" sizes=\"(max-width: 525px) 100vw, 525px\" data-has-transparency=\"false\" data-dominant-color=\"ebf0ec\" style=\"--dominant-color: #ebf0ec\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Image 7. SageMaker Dashboard \u2014 Model Build Process<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b5d14c0 elementor-widget elementor-widget-text-editor\" data-id=\"b5d14c0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p><\/p><p id=\"c92a\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">When the model has been registered we can deploy the inference endpoint. Just take a look to the model deploy project that includes a CloudFormation template to create the infrastructure required to deploy a SageMaker Endpoint.<\/p><p id=\"6c15\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">In CloudFormation (Image 8) you will see a couple of elements:<\/p><ol class=\"\"><li id=\"187a\" class=\"li lj fo lk b gm ll lm ln gp lo lp lq akr ls lt lu aks lw lx ly akt ma mb mc md aku akv akw bj\" data-selectable-paragraph=\"\">The SageMaker model you built in the code-build step<\/li><li id=\"9790\" class=\"li lj fo lk b gm akx lm ln gp aky lp lq akr akz lt lu aks ala lx ly akt alb mb mc md aku akv akw bj\" data-selectable-paragraph=\"\">Endpoint config and the instance associated to it<\/li><\/ol><p><\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-727df90 elementor-widget elementor-widget-image\" data-id=\"727df90\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" loading=\"lazy\" width=\"525\" height=\"405\" src=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/8.webp\" class=\"attachment-large size-large not-transparent\" alt=\"Image 8. SageMaker Endpoint CloudFormation\" srcset=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/8.webp 720w, https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/8-300x231.webp 300w\" sizes=\"(max-width: 525px) 100vw, 525px\" data-has-transparency=\"false\" data-dominant-color=\"f4f5f4\" style=\"--dominant-color: #f4f5f4\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Image 8. SageMaker Endpoint CloudFormation<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0f0cb47 elementor-widget elementor-widget-text-editor\" data-id=\"0f0cb47\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p><\/p><p>The pipeline is now ready to deploy the model in staging environment and then will ask if you want to promote the changes to production environment (lets say no at this moment) we would like to test the inference endpoint in staging environment.<\/p><p><\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a222019 elementor-widget elementor-widget-image\" data-id=\"a222019\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" loading=\"lazy\" width=\"525\" height=\"319\" src=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/9.webp\" class=\"attachment-large size-large not-transparent\" alt=\"Image 9. SageMaker model deploy pipeline steps \u2014 part 1\" srcset=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/9.webp 720w, https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/9-300x182.webp 300w\" sizes=\"(max-width: 525px) 100vw, 525px\" data-has-transparency=\"false\" data-dominant-color=\"f6f6f5\" style=\"--dominant-color: #f6f6f5\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Image 9. SageMaker model deploy pipeline steps \u2014 part 1<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ef6d768 elementor-widget elementor-widget-image\" data-id=\"ef6d768\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" loading=\"lazy\" width=\"525\" height=\"339\" src=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/10.webp\" class=\"attachment-large size-large not-transparent\" alt=\"Image 10. SageMaker model deploy pipeline steps \u2014 part 2\" srcset=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/10.webp 720w, https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/10-300x194.webp 300w\" sizes=\"(max-width: 525px) 100vw, 525px\" data-has-transparency=\"false\" data-dominant-color=\"fafbfb\" style=\"--dominant-color: #fafbfb\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Image 10. SageMaker model deploy pipeline steps \u2014 part 2<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-567d875 elementor-widget elementor-widget-text-editor\" data-id=\"567d875\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p><\/p><p id=\"af95\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">When AWS CodePipeline is executing the TestStaging step, SageMaker obtains the metrics defined. If your model doesn\u2019t perform well during the training process this step fail because your model is not a good candidate for production environment.<\/p><p id=\"227c\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">As a result, we see a new inference endpoint in service:<\/p><p><\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9e7b0a8 elementor-widget elementor-widget-image\" data-id=\"9e7b0a8\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" loading=\"lazy\" width=\"525\" height=\"219\" src=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/11.webp\" class=\"attachment-large size-large not-transparent\" alt=\"Image 11. In Service Endpoints SageMaker\" srcset=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/11.webp 720w, https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/11-300x125.webp 300w\" sizes=\"(max-width: 525px) 100vw, 525px\" data-has-transparency=\"false\" data-dominant-color=\"ecefed\" style=\"--dominant-color: #ecefed\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Image 11. In Service Endpoints SageMaker<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fe80f56 elementor-widget elementor-widget-text-editor\" data-id=\"fe80f56\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p><\/p><p>Finally your endpoint (Image 12) has been deployed, you can check the details and obviously you are good to go with some API calls.<\/p><p><\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0fe1fab elementor-widget elementor-widget-image\" data-id=\"0fe1fab\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" loading=\"lazy\" width=\"525\" height=\"117\" src=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/12.webp\" class=\"attachment-large size-large not-transparent\" alt=\"Image 12. SageMaker Endpoints Detail\" srcset=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/12.webp 720w, https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/12-300x67.webp 300w\" sizes=\"(max-width: 525px) 100vw, 525px\" data-has-transparency=\"false\" data-dominant-color=\"f4f3f2\" style=\"--dominant-color: #f4f3f2\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Image 12. SageMaker Endpoints Detail<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c8e442a elementor-widget elementor-widget-text-editor\" data-id=\"c8e442a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p><\/p><p>I\u2019ve prepared a small script to test my predictions, and this is some spoiler for the next post\u2026. I have to provide the features encoded.<\/p><p><\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0f79fcc elementor-widget elementor-widget-image\" data-id=\"0f79fcc\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" loading=\"lazy\" width=\"525\" height=\"119\" src=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/13.webp\" class=\"attachment-large size-large not-transparent\" alt=\"Image 13. Python Script to invoke the SageMaker Endpoint\" srcset=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/13.webp 720w, https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/13-300x68.webp 300w\" sizes=\"(max-width: 525px) 100vw, 525px\" data-has-transparency=\"false\" data-dominant-color=\"32343a\" style=\"--dominant-color: #32343a\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Image 13. Python Script to invoke the SageMaker Endpoint<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-53c423a elementor-widget elementor-widget-text-editor\" data-id=\"53c423a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p><\/p><p id=\"c752\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">Import the boto3 library and generate a new session using your IAM credentials (Local environment).<\/p><p id=\"f864\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">Call the SageMaker API passing the parameters required:<\/p><ol class=\"\"><li id=\"ef18\" class=\"li lj fo lk b gm ll lm ln gp lo lp lq akr ls lt lu aks lw lx ly akt ma mb mc md aku akv akw bj\" data-selectable-paragraph=\"\">The name of the endpoint in service<\/li><li id=\"fff1\" class=\"li lj fo lk b gm akx lm ln gp aky lp lq akr akz lt lu aks ala lx ly akt alb mb mc md aku akv akw bj\" data-selectable-paragraph=\"\">The record you want to classify with its information encoded<\/li><li id=\"7bac\" class=\"li lj fo lk b gm akx lm ln gp aky lp lq akr akz lt lu aks ala lx ly akt alb mb mc md aku akv akw bj\" data-selectable-paragraph=\"\">The content type, as you can see is a comma separated string so I specify it is csv<\/li><\/ol><p id=\"9922\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">Then I print the prediction result (Image 14), as a result the classification algorithm says is 92.7% sure this record belongs to the X category.<\/p><p><\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f981cfb elementor-widget elementor-widget-image\" data-id=\"f981cfb\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" loading=\"lazy\" width=\"525\" height=\"44\" src=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/14.webp\" class=\"attachment-large size-large not-transparent\" alt=\"Image 14. Execution endpoint call\" srcset=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/14.webp 720w, https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/07\/14-300x25.webp 300w\" sizes=\"(max-width: 525px) 100vw, 525px\" data-has-transparency=\"false\" data-dominant-color=\"0b0d0d\" style=\"--dominant-color: #0b0d0d\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Image 14. Execution endpoint call<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-275f603 elementor-widget elementor-widget-text-editor\" data-id=\"275f603\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p><\/p><p id=\"c5d8\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\"><em class=\"nn\">Bonus:<\/em><\/p><p id=\"f519\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\"><em class=\"nn\">Evaluating a classifier is often tricky and there are many performance measures you can use:<\/em><\/p><p id=\"78ad\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\"><em class=\"nn\">Use a confusion matrix, this is going to return<\/em><\/p><ol class=\"\"><li id=\"a21b\" class=\"li lj fo lk b gm ll lm ln gp lo lp lq akr ls lt lu aks lw lx ly akt ma mb mc md aku akv akw bj\" data-selectable-paragraph=\"\"><em class=\"nn\">The true negatives (correctly classified as non X) \u2014 false positives (wrongly classified as X)<\/em><\/li><li id=\"a7f5\" class=\"li lj fo lk b gm akx lm ln gp aky lp lq akr akz lt lu aks ala lx ly akt alb mb mc md aku akv akw bj\" data-selectable-paragraph=\"\"><em class=\"nn\">True positives ( wrongly classified as non X) \u2014 true positives (correctly classified as X)<\/em><\/li><\/ol><p id=\"a1b7\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\"><em class=\"nn\">There are some important metrics:<\/em><\/p><p id=\"ad41\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\"><em class=\"nn\">Precision: The accuracy of good predictions<\/em><\/p><p id=\"c299\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\"><em class=\"nn\">precision = True Positives \/ (True Positives + False Positives)<\/em><\/p><p id=\"0fec\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\"><em class=\"nn\">Recall<\/em><\/p><p id=\"1fca\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\"><em class=\"nn\">recall = True Positives \/ (True Positives + False Negatives)<\/em><\/p><p id=\"0d5d\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\"><em class=\"nn\">Remember, there is a trade off with these metrics. If you increase one the other is going to decrease, this is called precision \/ recall trade \u2014 off.<\/em><\/p><p id=\"899a\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\"><em class=\"nn\">The receiver operating characteristic (ROC) curve, it is a common tool for binary classifiers and plots a curve for the true positive rate (recall) vs false positive rate (FPR) or specificity.<\/em><\/p><p id=\"7ad9\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\"><em class=\"nn\">One important measure is the Area Under the Curve (AUC) for a ROC curve:<\/em><\/p><ol class=\"\"><li id=\"9a4f\" class=\"li lj fo lk b gm ll lm ln gp lo lp lq akr ls lt lu aks lw lx ly akt ma mb mc md aku akv akw bj\" data-selectable-paragraph=\"\"><em class=\"nn\">A perfect classificatory will have a value equal to 1 (a perfect classifier)<\/em><\/li><li id=\"26e2\" class=\"li lj fo lk b gm akx lm ln gp aky lp lq akr akz lt lu aks ala lx ly akt alb mb mc md aku akv akw bj\" data-selectable-paragraph=\"\"><em class=\"nn\">A really bad classification algorithm have a value less or equal to 0.5 (random classifier)<\/em><\/li><\/ol><p id=\"415e\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">I hope you enjoy this post, I am not an expert but I have curiosity to see how some things work and share with others my experiences.<\/p><p class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">To\u00a0<\/p><div class=\"bl aey\"><div><div class=\"bl\" aria-hidden=\"false\" aria-describedby=\"780\" aria-labelledby=\"780\"><a class=\"aln adi pz\" href=\"https:\/\/medium.com\/u\/19ba2e609fd3?source=post_page-----cee433db05eb--------------------------------\" target=\"_blank\" rel=\"noopener\">Daniel Vasquez<\/a><\/div><\/div><\/div><p class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">\u00a0and the\u00a0<\/p><div class=\"bl aey\"><div><div class=\"bl\" aria-hidden=\"false\" aria-describedby=\"726\" aria-labelledby=\"726\"><a class=\"aln adi pz\" href=\"https:\/\/medium.com\/u\/ae62d9113baa?source=post_page-----cee433db05eb--------------------------------\" target=\"_blank\" rel=\"noopener\">TBBC<\/a><\/div><\/div><\/div><p id=\"3e0f\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">\u00a0team, I sincerely thank you guys for the strong support<\/p><p id=\"ff10\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\">See you around,<\/p><p id=\"973c\" class=\"pw-post-body-paragraph li lj fo lk b gm ll lm ln gp lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md fh bj\" data-selectable-paragraph=\"\"><em class=\"nn\">Esteban Cer\u00f3n<\/em><\/p><p><\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bc7fc08 elementor-widget elementor-widget-spacer\" data-id=\"bc7fc08\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Discover how to implement MLOps using AWS SageMaker Pipelines to manage data in serverless architectures. Learn about features, models training, and evaluations. Explore tools like SageMaker Model Registry, Projects, DataWangler, and AWS CodePipeline. Optimize your machine learning deployments!<\/p>\n","protected":false},"author":5,"featured_media":5614,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[106,1],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Applying MLOPS practices with SageMaker \u2014 Part 2<\/title>\n<meta name=\"description\" content=\"C\u00f3mo implementar y poner en pr\u00e1ctica MLOPS utilizando SageMaker. Aprende sobre pipelines, ingenier\u00eda de caracter\u00edsticas y herramientas clave.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[:es]Aplicando pr\u00e1cticas de MLOPS con SageMaker - Parte 2[:en]Applying MLOPS practices with SageMaker \u2014 Part 2[:]\" \/>\n<meta property=\"og:description\" content=\"C\u00f3mo implementar y poner en pr\u00e1ctica MLOPS utilizando SageMaker. Aprende sobre pipelines, ingenier\u00eda de caracter\u00edsticas y herramientas clave.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/\" \/>\n<meta property=\"og:site_name\" content=\"The BitBang Company\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/bitbangcompany\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-04T22:35:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-04T23:13:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/06\/SageMaker_Icon_Large-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Esteban Ceron\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Esteban Ceron\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/\"},\"author\":{\"name\":\"Esteban Ceron\",\"@id\":\"https:\/\/thebitbang.company\/#\/schema\/person\/a541d1aebfe81f02a46edcb492eee069\"},\"headline\":\"Applying MLOPS practices with SageMaker \u2014 Part 2\",\"datePublished\":\"2023-07-04T22:35:57+00:00\",\"dateModified\":\"2023-07-04T23:13:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/\"},\"wordCount\":2498,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/thebitbang.company\/#organization\"},\"articleSection\":[\"Technnical\",\"All\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/\",\"url\":\"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/\",\"name\":\"[:es]Aplicando pr\u00e1cticas de MLOPS con SageMaker - Parte 2[:en]Applying MLOPS practices with SageMaker \u2014 Part 2[:]\",\"isPartOf\":{\"@id\":\"https:\/\/thebitbang.company\/#website\"},\"datePublished\":\"2023-07-04T22:35:57+00:00\",\"dateModified\":\"2023-07-04T23:13:55+00:00\",\"description\":\"C\u00f3mo implementar y poner en pr\u00e1ctica MLOPS utilizando SageMaker. Aprende sobre pipelines, ingenier\u00eda de caracter\u00edsticas y herramientas clave.\",\"breadcrumb\":{\"@id\":\"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/thebitbang.company\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[:es]Aplicando pr\u00e1cticas de MLOPS con SageMaker &#8211; Parte 2[:en]Applying MLOPS practices with SageMaker \u2014 Part 2[:]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/thebitbang.company\/#website\",\"url\":\"https:\/\/thebitbang.company\/\",\"name\":\"The BitBang Company\",\"description\":\"At TBBC, we materialize the business leaders&#039; vision by building software and data development solutions\",\"publisher\":{\"@id\":\"https:\/\/thebitbang.company\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/thebitbang.company\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/thebitbang.company\/#organization\",\"name\":\"The BitBang Company SAS\",\"url\":\"https:\/\/thebitbang.company\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/thebitbang.company\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/05\/TBBC-Anagrama-3.png\",\"contentUrl\":\"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/05\/TBBC-Anagrama-3.png\",\"width\":582,\"height\":499,\"caption\":\"The BitBang Company SAS\"},\"image\":{\"@id\":\"https:\/\/thebitbang.company\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/bitbangcompany\/\",\"https:\/\/www.instagram.com\/bitbang.company\/\",\"https:\/\/www.linkedin.com\/company\/bitbangcompany\/\",\"https:\/\/www.youtube.com\/channel\/UCG5jG0E-L90prxgv5YGJIOg\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/thebitbang.company\/#\/schema\/person\/a541d1aebfe81f02a46edcb492eee069\",\"name\":\"Esteban Ceron\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/thebitbang.company\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8420b73cf96305f2a574e6a1176709f7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8420b73cf96305f2a574e6a1176709f7?s=96&d=mm&r=g\",\"caption\":\"Esteban Ceron\"},\"sameAs\":[\"https:\/\/tbbc.ai\"],\"url\":\"https:\/\/thebitbang.company\/en\/author\/ing-esteban-ceron\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[:es]Aplicando pr\u00e1cticas de MLOPS con SageMaker - Parte 2[:en]Applying MLOPS practices with SageMaker \u2014 Part 2[:]","description":"C\u00f3mo implementar y poner en pr\u00e1ctica MLOPS utilizando SageMaker. Aprende sobre pipelines, ingenier\u00eda de caracter\u00edsticas y herramientas clave.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/","og_locale":"en_US","og_type":"article","og_title":"[:es]Aplicando pr\u00e1cticas de MLOPS con SageMaker - Parte 2[:en]Applying MLOPS practices with SageMaker \u2014 Part 2[:]","og_description":"C\u00f3mo implementar y poner en pr\u00e1ctica MLOPS utilizando SageMaker. Aprende sobre pipelines, ingenier\u00eda de caracter\u00edsticas y herramientas clave.","og_url":"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/","og_site_name":"The BitBang Company","article_publisher":"https:\/\/www.facebook.com\/bitbangcompany\/","article_published_time":"2023-07-04T22:35:57+00:00","article_modified_time":"2023-07-04T23:13:55+00:00","og_image":[{"width":800,"height":400,"url":"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/06\/SageMaker_Icon_Large-1.jpg","type":"image\/jpeg"}],"author":"Esteban Ceron","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Esteban Ceron","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/#article","isPartOf":{"@id":"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/"},"author":{"name":"Esteban Ceron","@id":"https:\/\/thebitbang.company\/#\/schema\/person\/a541d1aebfe81f02a46edcb492eee069"},"headline":"Applying MLOPS practices with SageMaker \u2014 Part 2","datePublished":"2023-07-04T22:35:57+00:00","dateModified":"2023-07-04T23:13:55+00:00","mainEntityOfPage":{"@id":"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/"},"wordCount":2498,"commentCount":0,"publisher":{"@id":"https:\/\/thebitbang.company\/#organization"},"articleSection":["Technnical","All"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/","url":"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/","name":"[:es]Aplicando pr\u00e1cticas de MLOPS con SageMaker - Parte 2[:en]Applying MLOPS practices with SageMaker \u2014 Part 2[:]","isPartOf":{"@id":"https:\/\/thebitbang.company\/#website"},"datePublished":"2023-07-04T22:35:57+00:00","dateModified":"2023-07-04T23:13:55+00:00","description":"C\u00f3mo implementar y poner en pr\u00e1ctica MLOPS utilizando SageMaker. Aprende sobre pipelines, ingenier\u00eda de caracter\u00edsticas y herramientas clave.","breadcrumb":{"@id":"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/thebitbang.company\/2023\/07\/aplicando-practicas-de-mlops-con-sagemaker-parte-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thebitbang.company\/"},{"@type":"ListItem","position":2,"name":"[:es]Aplicando pr\u00e1cticas de MLOPS con SageMaker &#8211; Parte 2[:en]Applying MLOPS practices with SageMaker \u2014 Part 2[:]"}]},{"@type":"WebSite","@id":"https:\/\/thebitbang.company\/#website","url":"https:\/\/thebitbang.company\/","name":"The BitBang Company","description":"At TBBC, we materialize the business leaders&#039; vision by building software and data development solutions","publisher":{"@id":"https:\/\/thebitbang.company\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thebitbang.company\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/thebitbang.company\/#organization","name":"The BitBang Company SAS","url":"https:\/\/thebitbang.company\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thebitbang.company\/#\/schema\/logo\/image\/","url":"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/05\/TBBC-Anagrama-3.png","contentUrl":"https:\/\/thebitbang.company\/wp-content\/uploads\/2023\/05\/TBBC-Anagrama-3.png","width":582,"height":499,"caption":"The BitBang Company SAS"},"image":{"@id":"https:\/\/thebitbang.company\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/bitbangcompany\/","https:\/\/www.instagram.com\/bitbang.company\/","https:\/\/www.linkedin.com\/company\/bitbangcompany\/","https:\/\/www.youtube.com\/channel\/UCG5jG0E-L90prxgv5YGJIOg"]},{"@type":"Person","@id":"https:\/\/thebitbang.company\/#\/schema\/person\/a541d1aebfe81f02a46edcb492eee069","name":"Esteban Ceron","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thebitbang.company\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8420b73cf96305f2a574e6a1176709f7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8420b73cf96305f2a574e6a1176709f7?s=96&d=mm&r=g","caption":"Esteban Ceron"},"sameAs":["https:\/\/tbbc.ai"],"url":"https:\/\/thebitbang.company\/en\/author\/ing-esteban-ceron\/"}]}},"_links":{"self":[{"href":"https:\/\/thebitbang.company\/en\/wp-json\/wp\/v2\/posts\/6145"}],"collection":[{"href":"https:\/\/thebitbang.company\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thebitbang.company\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thebitbang.company\/en\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/thebitbang.company\/en\/wp-json\/wp\/v2\/comments?post=6145"}],"version-history":[{"count":8,"href":"https:\/\/thebitbang.company\/en\/wp-json\/wp\/v2\/posts\/6145\/revisions"}],"predecessor-version":[{"id":6167,"href":"https:\/\/thebitbang.company\/en\/wp-json\/wp\/v2\/posts\/6145\/revisions\/6167"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thebitbang.company\/en\/wp-json\/wp\/v2\/media\/5614"}],"wp:attachment":[{"href":"https:\/\/thebitbang.company\/en\/wp-json\/wp\/v2\/media?parent=6145"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thebitbang.company\/en\/wp-json\/wp\/v2\/categories?post=6145"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thebitbang.company\/en\/wp-json\/wp\/v2\/tags?post=6145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}