#MLNET – Cambios en la API con la nueva version 0.6.0

Buenas!

Hace unos días se libero la version 0.6.0 de Machine Learning .Net y una de las novedades mas importantes de la misma fue que la API de uso de ML.Net cambio de una forma muy importante. En mis sesiones siempre suelo comentar el escenario de predicción del Label de una persona para ver si es niño, bebe o adolescente de acuerdo con su edad y género. El set de datos con el que trabajo tiene la siguiente estructura

01 mlnet age range data

Como se puede ver en la imagen anterior, mi training data set posee las columnas Name, Age, Gender y Label. Pues bien, un detalle importante es que también necesito 2 clases con campos para representar las filas de mis trainings datasets y el resultado esperado.

Hasta la version 0.5.0 de ML.Net la forma de trabajo se basaba en crear un pipeline con los siguientes pasos

  • Definir el modelo de datos y cargar los mismos
  • Definir las Features y Labels
  • Seleccionar un Trainer y entrenar el modelo

El modelo generado permitía realizar predicciones. El siguiente ejemplo lo explica en 20 líneas de código

Pues bien, con la version 0.6.0, la forma en la que se utiliza la API ha cambiado. Lo mejor en este punto es leer el post original de Cesar De la Torre donde explica las novedades de esta version (ver referencias). Sin embargo, creo que dejar un ejemplo del mismo código da una idea de lo flexible que es la nueva API

Los cambios principales los podemos encontrar en

  • Líneas 5 a 9, carga del archivo inicial de datos para training
  • Líneas 11 a 18, definición de Features y label para el training
  • Línea 20, entrenamiento y creación del modelo
  • Línea 22, creación de una función para realizar predicciones
  • Líneas 24 a 32, ejemplo de una predicción

El ejemplo completo se puede ver aquí https://github.com/elbruno/Blog/tree/master/20181011%20MLNET%200.6%20NewAPI

Happy coding!

Saludos @ Toronto

El Bruno

References

My Posts

Advertisements

#AutoML – Automated Machine Learning,AKA #Skynet

Hi!

IMHO one of the most important announcements presented last week in Ignite was the Azure preview for AutoML: Automated Machine Learning.

I’m not going to get into details about AutoML, the best option is to read the official post from the Azure Machine Learning team (see references). I’ll do my best effort to try to summarize that the objective of this new tool if to allows you to automatically identify the best pipeline to work in a machine learning environment / scenario.

A pipeline comprises the basic steps of a process of ML

  • Working with data, this means sorting, filtering, check for nulls, labeling, etc.
  • Select a learning algorithm, SVM, Fast Tree, etc.
  • Define features and Labels, adjust parameters, etc

The [try / error / learn] model in each of these steps help us to improve our model, and to get better results (better accuracy).

AutoML It proposes an automatic service, where the best combination is identified to create a pipeline with the best possible accuracy. As always an image rocks the explanation

01 AutoML process.png

Official description

Automated ML is available to try in the preview of Azure Machine Learning. We currently support classification and regression ML model recommendation on numeric and text data, with support for automatic feature generation (including missing values imputations, encoding, normalizations and heuristics-based features), feature transformations and selection. Data scientists can use automated ML through the Azure Machine Learning Python SDK and Jupyter notebook experience. Training can be performed on a local machine or by leveraging the scale and performance of Azure by running it on Azure Machine Learning managed compute. Customers have the flexibility to pick a pipeline from automated ML and customize it before deployment. Model explainability, ensemble models, full support for Azure Databricks and improvements to automated feature engineering will be coming soon.

From here I strongly recommend reading the official documentation that is where it is explained in detail AutoML. Also, if you are familiar with Jupyter Notebooks, in few seconds you can clone and access a new library with a tutorial to try AutoML from zero. You need to clone a repo from https://github.com/Azure/MachineLearningNotebooks

02 AutoML Jupyter Notebooks

The tutorial is pretty straightforward, and with little Azure resources you can see how you optimize a A Classification model with AutoML

03 AzureML Local tutorial

Although for now only models of classification and regression are supported, AutoML is a tool a Keep in mind when you start working in ML.

See you at the event, Happy Coding!

Greetings @ Toronto

El Bruno

References

#AutoML – Automated Machine Learning, modelos de #MachineLearning que aprenden a optimizarse! (en las movies se llama #skynet)

Buenas!

Una de las noticias mas importantes que se presentaron la semana pasada en Ignite fue la Preview de Azure AutoML: Automated Machine Learning.

Lo mejor para entrar en detalles sobre AutoML es leer el post oficial del equipo de Azure Machine Learning (ver referencias). Yo lo intentare resumir en un nuevo framework que permite identificar de forma automática el mejor pipeline para trabajar con datos.

Un pipeline comprende los pasos básicos de un proceso de ML

  • Trabajar con datos, esto significa ordenarlos, eliminar los nulls, etiquetarlos, etc.
  • Seleccionar un algoritmo de aprendizaje, SVM, Fast Tree, etc.
  • Definir Features y Labels, ajustar parámetros, etc

El modelo de prueba / error / aprendizaje en cada uno de estos pasos define la precisión que tendrá nuestro modelo final.

AutoML propone un servicio automático, donde se identifica la mejor combinación para crear una Pipeline con la mejor precisión posible. Como siempre una imagen ayuda a la explicación

01 AutoML process.png

Y la descripción oficial

Automated ML is available to try in the preview of Azure Machine Learning. We currently support classification and regression ML model recommendation on numeric and text data, with support for automatic feature generation (including missing values imputations, encoding, normalizations and heuristics-based features), feature transformations and selection. Data scientists can use automated ML through the Azure Machine Learning Python SDK and Jupyter notebook experience. Training can be performed on a local machine or by leveraging the scale and performance of Azure by running it on Azure Machine Learning managed compute. Customers have the flexibility to pick a pipeline from automated ML and customize it before deployment. Model explainability, ensemble models, full support for Azure Databricks and improvements to automated feature engineering will be coming soon.

Pues bien, a partir de aquí recomiendo leer la documentación oficial que es donde se explica en detalle AutoML.

Si estas familiarizado con Jupyter notebooks, en pocos segundos puedes tener acceso a un tutorial mas que completo solo clonado una library desde https://github.com/Azure/MachineLearningNotebooks

02 AutoML Jupyter Notebooks

El tutorial es bastante sencillo, y con pocos recursos de Azure puedes ver como se optimiza un un modelo de clasificación con AutoML

03 AzureML Local tutorial

Si bien por ahora solo se soportan modelos de clasificación y regresión, AutoML es una herramienta a tener en cuenta cuando comienzas a trabajar en ML.

Nos vemos en el evento, happy coding!

Saludos @ Toronto

El Bruno

References

#MLNET – Fix the error [System. InvalidOperationException, Entry Point ‘ Not found] when you train a pipeline

Hi!

Today I’m going to leave this POST as a memory backup for me because I always forget to make this configuration in ML.Net projects and I always find the following error:

System.InvalidOperationException

  HResult=0x80131509

  Message=Entry point ‘<some external assembly> not found

  Source=Microsoft.ML.Data

Where [External Assembly] can be For example LightGBM

  Message=Entry point ‘Trainers.LightGbmClassifier’ not found

01 mlnet entry point not found

This error triggered when the app is running, at the beginning of a pipeline training. It is usually associated with scenarios where we add and use external references in addition to Microsoft.ML.

The solution is quite simple, we just have to make sure that the Project Property <CopyLocalLockFileAssemblies> this enabled

02 mlnet project config CopyLocalLockFileAssemblies

Editing the csproj file like this

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup Label="Globals">
    <SccProjectName>SAK</SccProjectName>
    <SccProvider>SAK</SccProvider>
    <SccAuxPath>SAK</SccAuxPath>
    <SccLocalPath>SAK</SccLocalPath>
  </PropertyGroup>
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
  </PropertyGroup>

And ready, now our pipelines can train properly!

Happy Coding!

Greetings @ Burlington

El Bruno

References

My Posts

#MLNET – Solución para el error [System.InvalidOperationException, Entry point ‘ not found] al momento de entrenar un Pipeline

Buenas!

Hoy voy a dejar este post como un ayuda memoria de algo que me olvido siempre en los proyectos de ML.Net y siempre me encuentro con el siguiente error.

System.InvalidOperationException

  HResult=0x80131509

  Message=Entry point ‘<some external assembly> not found

  Source=Microsoft.ML.Data

Donde el [External Assembly] puede ser por ejemplo LightGBM

  Message=Entry point ‘Trainers.LightGbmClassifier’ not found

01 mlnet entry point not found

Este error es de ejecución y se da al momento de comenzar el entrenamiento de un Pipeline. Suele estar asociado a escenarios donde agregamos una referencia externa además de Microsoft.ML.

La solución es bastante simple, solo debemos asegurarnos que la propiedad de proyecto <CopyLocalLockFileAssemblies> este habilitado

02 mlnet project config CopyLocalLockFileAssemblies

Editando el csproj de la siguiente manera

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup Label="Globals">
    <SccProjectName>SAK</SccProjectName>
    <SccProvider>SAK</SccProvider>
    <SccAuxPath>SAK</SccAuxPath>
    <SccLocalPath>SAK</SccLocalPath>
  </PropertyGroup>
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
  </PropertyGroup>

Y listo, ahora nuestros pipelines pueden entrenar correctamente!

Happy Coding!

Saludos @ Burlington

El Bruno

References

My Posts

#MLNet – Adding NuGet Packages in Preview mode from MyGet, ie: Microsoft.ML-0.6.0 Version

Hi!

A few days ago I wrote about the new Machine Learning.Net version 0,5. Yesterday when .NetConf started, the release was made official with the following post from Cesar de la Torre

Announcing ML.NET 0.5

Now, a detail that is a little Deep in the documentation is the way to access packages in preview mode that are used in the following repositories Machine Learning  and Machine Learning Samples

Well, when we open and try to compile one of the projects we can see that in the references of this are being used Packages in preview state

01 mlnet 0.60 preview solution explorer

The problem we have is that, when built, these packages are not available in nuget.org

Unable to find package Microsoft.ML with version (>= 0.6.0-preview-26912-3)

  – Found 5 version(s) in nuget.org [ Nearest version: 0.5.0 ]

 TensorFlowMLNETInceptionv3ModelScoring  

02 mlnet 060 preview error on build

The solution for this is to add the necessary packages in manual mode from MyGet.

PM> Install-Package Microsoft.ML -Version 0.6.0-preview-26913-1 -Source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json

or set up a new NuGet source in Visual Studio, with the following information

03 MyGet ML.Net Sources NuGet

In this way, when a NuGet Restore action is performed for example, when we build a project, and we will have all the necessary packages available to work.

04 mlnet 0.60 preview solution explorer build OK

Happy Coding!

Greetings @ Toronto

El Bruno

References

My Posts

#MLNet – Agregando paquetes en modo Preview desde MyGet, por ejemplo Microsoft.ML -Version 0.6.0

Buenas!

Hace unos días hable de la nueva version 0.5 de Machine Learning.Net. Ayer cuando comenzó .NetConf, se hizo oficial el lanzamiento de esta version con el siguiente post de Cesar de la Torre

Announcing ML.NET 0.5

Ahora bien, un detalle que está un poco Deep en la documentación es la forma de acceder a paquetes en modo Preview que se utilizan en los repositorios de Machine Learning  y en Machine Learning Samples

Pues bien, cuando abrimos e intentamos compilar uno de los proyectos podemos ver que en las referencias de este se están utilizando packages en modo Preview

01 mlnet 0.60 preview solution explorer

El problema que tenemos es que, al compilar, estos paquetes no están disponibles en nuget.org

Unable to find package Microsoft.ML with version (>= 0.6.0-preview-26912-3)

  – Found 5 version(s) in nuget.org [ Nearest version: 0.5.0 ]

 TensorFlowMLNETInceptionv3ModelScoring  

02 mlnet 060 preview error on build

La solución para esto es agregar los paquetes necesarios en modo manual desde MyGet.

PM> Install-Package Microsoft.ML -Version 0.6.0-preview-26913-1 -Source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json

O configurar un nuevo source de NuGet en Visual Studio, con la siguiente información

Name: Microsoft.ML

Source: https://dotnet.myget.org/F/dotnet-core/api/v3/index.json

03 MyGet ML.Net Sources NuGet

De esta manera, cuando se realice una acción de NuGet restore, por ejemplo, al compilar, tendremos disponibles todos los paquetes necesarios para trabajar.

04 mlnet 0.60 preview solution explorer build OK

Happy Coding!

Saludos @ Toronto

El Bruno

References

My Posts

#MLNET – ML.Net 0.5 initial support for #TensorFlow

Hi!

New version of Machine Learning.Net and in this version, we have the ability to use TensorFlow frozen models in ML.Net.

During the process of creating a pipeline, we can now use TensorFlow frozen models models and use them to train a model and make predictions. In a console application, at the time of adding the ML.Net packages we can see a new series of packages to work with TensorFlow

01 ms ml tensor flow

The following code is the best way to understand how a pipeline with a TF model works. While I’m building my Pipeline, I use a couple of trainers to load and modify images; and then on line 40 the TF model is added to the pipeline

At this time the file [Cifar_model/FrozenModel. PB] is not part of the ML.Net repository. If you want to try the code, you can download a trial version from https://github.com/deeplearning4j/dl4j-test-resources/tree/master/src/main/resources/tf_graphs/examples/yolov2_608x608

02 mlnet cifar pb

Happy Coding!

Greetings @ Toronto

El Bruno

References

My Posts

#MLNET – ML.Net 0.5 con soporte para #TensorFlow

Buenas!

Nueva version de Machine Learning .Net y esta vez la novedad principal es la capacidad de utilizar modelos de TensorFlow en ML.Net.

Durante el proceso de creación de una Pipeline, ahora podemos utilizar modelos frezados de TF y utilizar los mismos para entrenar un modelo y realizar predicciones. En una aplicación de Consola, al momento de agregar los paquetes de ML.Net podemos ver una serie nueva de paquetes para trabajar con TensorFlow

01 ms ml tensor flow

El siguiente código es la mejor forma de entender como funciona una Pipeline con un modelo de TF. En la definición de la misma se utilizan un par de trainers para cargar y modificar imágenes; y luego en la línea 40 se carga el modelo para su utilización.

En este momento el archivo [cifar_model/frozen_model.pb] no es parte del repositorio de ML.Net. Si quieres probar el código, puedes descargar una version de prueba desde https://github.com/deeplearning4j/dl4j-test-resources/tree/master/src/main/resources/tf_graphs/examples/yolov2_608x608

02 mlnet cifar pb

Happy Coding!

Saludos @ Toronto

El Bruno

References

My Posts

#Ebook – Free ebook: Machine Learning with #MATLAB

I1.png

Hi!

Today is Friday, so it’s time for a quick post. I’m also sure that right now I’ll be on the FanExpo In Toronto with my little ones visiting Aquaman /Jason Momoa.

The Friends of Mathworks, parents of Matlab, are sharing for free this Machine Learning ebook

Machine Learning with MATLAB

Yesterday while I was returning home from work, I read the 1st section, and it is quite enjoyable reading. Yes, depending on the experience you have, Matlab as a language can be a little “special”.

Happy Coding!

Greetings @ Toronto

El Bruno