Tothom que ha provat el desenvolupament d'aprenentatge automàtic entén el difícil que és. A part dels problemes estàndard en el desenvolupament de programari, el desenvolupament d'aprenentatge automàtic (ML) introdueix una sèrie d'obstacles addicionals.
Hi ha centenars d'eines de codi obert disponibles per ajudar-vos amb totes les etapes del cicle de vida de ML, des de la preparació de dades fins a la formació de models.
A diferència del desenvolupament de programari tradicional, quan els equips trien una eina per a cada pas, amb ML en general voleu explorar totes les eines disponibles (per exemple, algorisme) per veure si millora els resultats.
Com a resultat, els desenvolupadors de ML han d'utilitzar i produir centenars de biblioteques.
Els algorismes d'aprenentatge automàtic contenen milers de paràmetres personalitzables i és difícil identificar quins paràmetres, codi i dades s'han incorporat a cada experiment per generar un model, tant si treballeu sol com en equip.
Sense un seguiment adequat, els equips sovint lluiten per aconseguir que el mateix codi torni a funcionar. Tant si sou un científic de dades que transfereix el vostre codi de formació a un enginyer per a l'ús de producció, com si torneu al vostre treball anterior per diagnosticar un problema, retrocedir els passos del flux de treball de ML és crucial.
Moure un model a producció pot ser difícil a causa dels nombrosos mètodes i entorns de desplegament que s'han d'utilitzar (p. ex., publicació REST, inferència per lots o aplicacions mòbils). No hi ha un mètode comú per moure models des de cap biblioteca a cap d'aquestes eines i, per tant, cada nou desplegament presenta un risc.
A causa d'aquests problemes, és obvi que el desenvolupament de ML ha de millorar significativament per ser tan estable, previsible i àmpliament utilitzat com el desenvolupament de programari tradicional.
Reptes ML
- Hi ha una gran quantitat d'eines diferents. Hi ha centenars de solucions de programari disponibles per ajudar-vos amb totes les etapes del cicle de vida de l'aprenentatge automàtic, des de la preparació de dades fins a la formació de models. A més, a diferència del desenvolupament de programari tradicional, quan els equips trien una eina per a cada pas, en l'aprenentatge automàtic (ML), sovint voleu explorar totes les eines disponibles (p. ex., algorisme) per veure si millora els resultats. Com a resultat, els desenvolupadors de ML han d'utilitzar i produir centenars de biblioteques.
- És difícil fer un seguiment dels experiments. Els algorismes d'aprenentatge automàtic contenen milers de paràmetres personalitzables i és difícil identificar quins paràmetres, codi i dades s'han incorporat a cada experiment per generar un model, tant si treballeu sol com en equip.
- És difícil implementar l'aprenentatge automàtic. Moure un model a producció pot ser difícil a causa dels nombrosos mètodes i entorns de desplegament que s'han d'utilitzar (p. ex., publicació REST, inferència per lots o aplicacions mòbils). No hi ha cap mètode comú per moure models des de cap biblioteca a cap d'aquestes eines. Així, cada nou desplegament introdueix un risc.
Què és MLflow?
MLflow és una plataforma de codi obert per al cicle de vida d'aprenentatge automàtic. Es basa en un concepte d'interfície oberta, proposant moltes abstraccions essencials que permeten integrar fàcilment la infraestructura actual i els algorismes d'aprenentatge automàtic amb el sistema.
Això implica que si sou un desenvolupador que vol utilitzar MLflow però està utilitzant un marc no compatible, el disseny de la interfície oberta fa que sigui relativament senzill integrar aquest marc i començar a treballar amb la plataforma. A la pràctica, això implica que MLflow està pensat per funcionar amb qualsevol màquina d'aprenentatge biblioteca o llengua.
A més, MLflow promou la repetibilitat, la qual cosa significa que el mateix codi d'aprenentatge automàtic o de producció està pensat per executar-se amb els mateixos resultats independentment de l'entorn, ja sigui al núvol, en una estació de treball local o en un quadern.
Finalment, MLflow està dissenyat per a l'escalabilitat, de manera que pot ser utilitzat per un petit equip de científics de dades, així com per una gran empresa amb centenars de professionals de l'aprenentatge automàtic.
MLflow és compatible amb qualsevol biblioteca, algorisme, eina de desplegament o llenguatge d'aprenentatge automàtic. També té els següents avantatges:
- Dissenyat per funcionar amb qualsevol servei al núvol.
- S'escala a grans dades amb Apache Spark.
- MLflow és compatible amb una varietat de marcs d'aprenentatge automàtic de codi obert, inclòs Apache Spark, TensorFlowi SciKit-Learn.
Si ja teniu codi, MLflow es pot utilitzar amb ell. Fins i tot podeu compartir el vostre marc i models entre empreses perquè ho és de codi obert.
Components MLflow: com funcionen?
MLflow és una plataforma gratuïta i de codi obert per gestionar el cicle de vida de ML, que inclou l'experimentació, la reproductibilitat, el desplegament i un registre de model únic. Actualment, MLflow té quatre components:
1. Seguiment de MLflow
Vaig a començar amb el seguiment de MLflow. MLflow admet la col·lecció de diversos conceptes essencials vinculats a un dipòsit de seguiment de metadades de formació centralitzat. La primera noció és una col·lecció d'hiperparàmetres crítics o botons de configuració que influeixen en el rendiment del model. L'ús de les API de MLflow i un servei de seguiment centralitzat pot preservar-ho tot.
Els usuaris també poden registrar dades de rendiment per obtenir informació sobre l'èxit dels seus models d'aprenentatge automàtic. A més, per a la repetibilitat, MLflow permet als usuaris registrar el codi font específic que es va utilitzar per crear un model, així com la seva versió, integrant-se estretament amb Git per vincular cada model a un hash de commit específic.
MLflow es pot utilitzar per registrar artefactes, que són qualsevol fitxer arbitrari, inclòs l'entrenament, les dades de prova i els mateixos models per a la seva reproductibilitat.
Això vol dir que si sóc un desenvolupador que acabo d'entrenar un model, puc mantenir-lo al servei de seguiment centralitzat i un dels meus companys el pot carregar més tard i continuar entrenant i experimentant o produint aquest model per satisfer una necessitat específica. .
Quan executeu el vostre codi d'aprenentatge automàtic i després visualitzeu els resultats, el seguiment és una API que us permet registrar paràmetres, versions de codi, mètriques i fitxers de sortida. Està escrit en Python, R i Java, entre altres llenguatges. També és accessible com a API REST, que es pot utilitzar per crear aplicacions a sobre.
Característiques clau
- Molts desenvolupadors utilitzen MLflow al seu ordinador local, on el backend i l'emmagatzematge d'artefactes comparteixen un directori al disc.
- Molts usuaris també utilitzen SQLite, una base de dades compatible amb SQLAlchemy, per executar MLflow als seus ordinadors locals.
- MLflow també admet arquitectures distribuïdes. El servidor de seguiment, la botiga de fons i la botiga d'artefactes estan allotjats en diferents servidors d'aquests.
- Si l'execució va ser iniciada per un projecte MLflow, es va utilitzar el hash de commit git. Les API MLflow Python, R, Java i REST es poden utilitzar per registrar dades per executar-se.
Per a més informació, podeu consultar l'oficial documentació.
2. Projectes MLFlow
Després d'haver revisat els components de seguiment, m'agradaria parlar dels projectes MLflow, que són una estructura d'empaquetament repetible per a sessions de formació de models, independentment del context d'execució.
Les empreses utilitzen una àmplia gamma de tecnologies de formació en aprenentatge automàtic, però també utilitzen aquestes eines de formació en un conjunt divers de contextos. Per exemple, poden estar executant el seu codi d'entrenament al núvol, en un ordinador local o en un quadern.
Això porta al problema que els resultats de l'aprenentatge automàtic són difícils de replicar. Sovint, el mateix codi d'entrenament idèntic no s'executa ni dóna els mateixos resultats en dues ubicacions diferents.
La solució proporcionada per MLflow és una definició de projecte de codi d'entrenament autònom que inclou tot el codi d'entrenament d'aprenentatge automàtic, així com les dependències de la biblioteca de versions, la configuració i les dades d'entrenament i de prova.
MLflow garanteix la reproductibilitat en els contextos d'execució descrivint clarament tot el conjunt de requisits per a un procés de formació d'aprenentatge automàtic. Ho aconsegueix instal·lant totes aquestes biblioteques i assolint el mateix estat del sistema en què s'executa el codi.
El projecte MLflow no és més que un directori. És un directori que inclou el codi d'entrenament, la definició de dependència de la biblioteca i altres dades necessàries per a la sessió de formació, així com aquest fitxer de configuració opcional.
Aquests requisits de la biblioteca es poden definir de diverses maneres. Els usuaris poden, per exemple, proporcionar una especificació d'entorn anaconda amb format YAML per enumerar els requisits de la biblioteca de codis d'entrenament. MLflow executarà el codi d'entrenament dins del contenidor. En aquest cas, també poden incloure un contenidor Docker.
Finalment, MLflow té una interfície de línia d'ordres (CLI) per executar aquests projectes, així com les API de Python i Java. Aquests projectes es poden executar al sistema local de l'usuari, així com en una varietat de configuracions remotes, com ara el programador de treballs de Databricks i Kubernetes. Els projectes MLflow us permeten empaquetar codi de ciència de dades d'una manera repetible i reutilitzable, principalment basat en estàndards.
El component de projectes inclou una API i utilitats de línia d'ordres per gestionar projectes. Aquestes capacitats garanteixen que els projectes es puguin encadenar per formar processos d'aprenentatge automàtic.
Característiques clau
- MLflow admet entorns de projecte, inclòs l'entorn de contenidors Docker, l'entorn Conda i l'entorn del sistema.
- Qualsevol dipòsit de Git o directori local es pot considerar com un projecte MLflow; per defecte; podeu utilitzar qualsevol shell o Script Python al directori com a punt d'entrada del projecte.
- Les dependències que no són de Python, com ara les biblioteques de Java, es poden capturar mitjançant contenidors Docker.
- Podeu obtenir un major control sobre un projecte MLflow afegint un fitxer de projecte al directori arrel del projecte, que és un fitxer de text amb sintaxi YAML.
Per a més informació, podeu consultar l'oficial documentació.
3. Models MLflow
Ara, m'agradaria parlar dels models MLflow, un format de model de propòsit general que admet una àmplia gamma de contextos de producció. El motiu dels models MLflow és ara força similar al dels projectes.
De nou, veiem que els models es poden generar utilitzant una àmplia gamma d'eines, però també es poden produir o desplegar en una gran varietat de situacions, a diferència dels entorns de formació.
Aquests paràmetres inclouen eines per a la publicació en temps real, com ara Kubernetes o Amazon SageMaker, així com la puntuació en temps real i per lots, com ara Spark. A més, algunes empreses poden optar per desplegar models com a servei web RESTful que s'executa en una instància de núvol preconfigurada.
Un model MLflow, com un projecte, és una estructura de directoris. Inclou un fitxer de configuració i, aquesta vegada, un artefacte de model serialitzat en lloc de codi d'entrenament. També inclou aquest conjunt de dependències per a la repetibilitat com a projecte. Aquesta vegada, analitzarem les dependències d'avaluació en el context d'un entorn Conda.
A més, MLflow inclou eines de generació de models per serialitzar models en format MLflow a partir d'una sèrie de frameworks populars. Finalment, MLflow afegeix desplegaments, API per produir i connectar qualsevol model MLflow a una sèrie de serveis, i aquestes API són accessibles en format Python, Java, R i CLI.
Els models són un component amb una estructura estàndard per a models d'embalatge que es poden utilitzar i entendre per eines posteriors com ara servidors d'inferència o Maquetes de dades plataforma d'inferència per lots. Aquest component estalvia hores de codi a mida en empaquetar un model per a la producció.
El model MLflow és un estàndard per empaquetar models d'aprenentatge automàtic en una varietat de formes conegudes com a "sabors". MLflow ofereix moltes eines per ajudar-vos a desplegar diversos tipus de models. Cada model MLflow es manté com un directori que conté fitxers arbitraris, així com un fitxer descriptor de model ML amb una llista dels sabors en què es pot utilitzar.
Característiques clau
- Totes les eines de desplegament integrades de MLflow ofereixen múltiples sabors "estàndards", com ara un sabor "funció Python" que explica com executar el model com a funció Python.
- Cada model MLflow consta d'un directori que conté fitxers arbitraris, així com d'un fitxer de model ML a l'arrel del directori que defineix els nombrosos sabors del model.
- Quan emmagatzemeu un model, MLflow us permet especificar un paràmetre d'entorn Conda que contingui les dependències del model. Si no s'especifica cap entorn Conda, es construeix un entorn predeterminat basat en el gust del model. Després d'això, l'entorn Conda s'emmagatzema a conda.yaml.
Per a més informació, podeu consultar l'oficial documentació.
4. Registre de models MLflow
Un registre de models és un dipòsit per a models apresos d'aprenentatge automàtic (ML). Model Registry està format per API i una aplicació basada en web que s'utilitza per mantenir models en diferents fases com a equip. El llinatge del model, la versió del model, la transició d'etapa fàcil i l'anotació són només algunes de les capacitats disponibles al registre de models.
Un registre de models, a més dels mateixos models, conté informació (metadades) sobre les dades i les tasques d'entrenament utilitzades per construir el model. És fonamental fer un seguiment d'aquestes entrades necessàries per crear un llinatge per als models ML. En aquest sentit, un model de registre funciona de manera similar al programari convencional control de versions sistemes (per exemple, Git, SVN) i dipòsits d'artefactes (per exemple, Artifactory, PyPI).
El Registre de models és un marc que permet als científics de dades i als enginyers d'aprenentatge automàtic publicar, provar, supervisar, gestionar i distribuir els seus models per cooperar amb altres equips. Bàsicament, el registre del model s'utilitza un cop hagueu completat la fase de prova i esteu preparat per compartir les vostres conclusions amb l'equip i les parts interessades.
El Registre de models MLflow proporciona una API i una interfície d'usuari per gestionar els vostres models i la seva vida útil des d'una ubicació central. El llinatge del model, la versió del model, les anotacions i les transicions d'etapa estan disponibles a través del registre.
A MLflow, un model registrat és el que té un nom i metadades únics, versions del model, fases de transició i un llinatge del model. Es poden trobar una o més versions del model en un model registrat. Un nou model es considera versió 1 quan es registra al registre. La versió següent s'afegeix a qualsevol model nou amb el mateix nom.
Podeu assignar un pas a qualsevol versió del model en qualsevol moment. Tanmateix, les etapes s'han d'assignar sota les fases de MLflow que s'han especificat formalment, com ara la posada en escena, la producció i l'arxivat. Una versió del model es pot passar d'una etapa a una altra.
MLflow us permet utilitzar Markdown per anotar tant el model de nivell superior com cada versió específica. Podeu incloure descripcions així com altra informació pertinent, com ara explicacions d'algorismes, metodologia i conjunts de dades utilitzats.
Característiques clau
- Per accedir al registre del model mitjançant la interfície d'usuari o l'API quan allotgeu el vostre propi servidor MLflow, heu d'utilitzar una botiga de fons de base de dades.
- També es pot accedir al Registre de models mitjançant el sabor del model MLflow o la interfície de l'API de seguiment de clients de MLflow. Podeu, per exemple, registrar un model durant l'execució d'un experiment MLflow o després de l'execució de tots els vostres experiments.
- No tothom començarà a entrenar els seus models amb MLflow. Com a resultat, és possible que tingueu alguns models entrenats abans d'utilitzar MLflow. En lloc de tornar a entrenar els models, només voleu registrar els vostres models emmagatzemats al Registre de models.
Per a més informació, podeu consultar l'oficial documentació.
Conclusió
MLflow és una eina de cicle de vida de ML excel·lent i en constant creixement. Podeu utilitzar-lo juntament amb les vostres eines i plataformes actuals.
Admet diversos llenguatges de programació, com ara Python, Java i R. També podeu fer un seguiment, desar i comparar ràpidament diferents versions de models gràcies al seu disseny fàcil d'utilitzar.
Prova MLflow i fes-nos saber la teva experiència!
Deixa un comentari