Un aspecto do escenario é a creación dun modelo de aprendizaxe automática. Debe ser utilizable no mundo real e dispoñible para consumidores e desenvolvedores.
A forma máis sinxela e popular de implementar modelos de aprendizaxe automática é encerralos nunha API REST.
Cunha biblioteca popular chamada FastAPI, iso é exactamente o que conseguiremos hoxe.
Pero, que é FastAPI?
O marco web FastAPI Python creouse desde cero para aproveitar as capacidades contemporáneas de Python.
Para a comunicación asíncrona e simultánea cos clientes, adhírese ao estándar ASGI, aínda que tamén é capaz de usar WSGI.
Tanto os puntos finais como as rutas poden empregar funcións asíncronas. Ademais, FastAPI permite a creación produtiva de aplicacións web en código Python limpo e contemporáneo con indicacións de tipo.
O caso de uso principal de FastAPI é, como o seu nome indica, a creación de puntos finais da API.
Usar o estándar OpenAPI, que inclúe unha IU interactiva de Swagger, ou proporcionar datos de dicionario de Python como JSON son formas sinxelas de conseguilo. Non obstante, FastAPI non é só para API.
Pódese usar para ofrecer páxinas web estándar usando o motor de modelos Jinja2 e para servir aplicacións que utilizan WebSockets, ademais de practicamente todo o que pode facer un marco web.
Neste artigo, desenvolveremos un modelo sinxelo de aprendizaxe automática e despois empregaremos FastAPI para implantalo. Imos comezar.
Instalación de FastAPI e creación da primeira API
Requírese primeiro instalar a biblioteca e un servidor ASGI; Uvuicorn ou Hypercorn funcionarán. Funciona introducindo o seguinte comando no Terminal:
Agora que se creou a API, podes usar o teu editor de código preferido e navegar por el. Crea un script de Python chamado ml_model.py para comezar. Podes poñerlle un nome diferente ao teu, pero polo ben desta publicación, referireime a este ficheiro como ml_model.py.
Para crear unha API sinxela con dous puntos finais, debes completar as seguintes tarefas:
- Importa as bibliotecas FastAPI e Uvicorn.
- Configura unha instancia de clase FastAPI.
- Declara a primeira ruta que, na páxina de índice, produce un obxecto JSON sinxelo.
- Declara a segunda ruta, que proporciona un obxecto JSON sinxelo cunha mensaxe personalizada. O parámetro nome tómase directamente do URL (por exemplo, https://127.0.0.1:8000/Jay).
- Use Uvicorn para executar a API.
A implementación destas cinco etapas móstrase no seguinte bit de código, é dicir. creando unha API sinxela
Todo feito! Imos lanzar a nosa API inmediatamente. Abre unha xanela de Terminal xunto ao ficheiro ml model.py para facelo. A continuación, introduza o seguinte:
a tecla Intro. Antes de seguir adiante, imos desmentir esta afirmación. A primeira aplicación fai uso só do nome do ficheiro Python, sen a extensión. A segunda aplicación debe ter o mesmo nome que a túa instancia FastAPI.
Ao usar -reload, indicas á API que queres que se recargue automaticamente cando gardas o ficheiro en lugar de comezar desde cero.
Agora inicie un navegador e navegue ata https://127.0.0.1:8000; o resultado debe aparecer como segue:
Agora comprendes como crear unha API sinxela usando FastAPI.
Construír e adestrar o modelo de Machine Learning
Sen recoller nin analizar ningún dato, só adestraremos un modelo sinxelo. Estes non están relacionados co despregamento de modelos e non son esenciais para o tema que nos ocupa.
Pódese instalar un modelo baseado no conxunto de datos Iris usando o mesmo rede neural método de instalación.
E faremos precisamente iso: descargar o conxunto de datos Iris e adestrar o modelo. Iso non será sinxelo. Para comezar, crea un ficheiro chamado jaysmlmodel.py.
Nel, farás o seguinte:
- Importacións: necesitarás pandas, scikit-RandomForecastClassifier, o BaseModel de Learn pydantic (descubrirás por que no seguinte paso) e joblib para almacenar e cargar modelos.
- Declarar unha clase IrisSpecies que herda do modelo base. Esta clase só contén os campos necesarios para prever unha única especie de flor (máis sobre iso na seguinte sección)
- Crear unha clase. IrisModel é unha ferramenta de adestramento e predición de modelos.
- Declarar un método chamado _train model dentro de IrisModel. Utilízase para adestrar modelos mediante a técnica Random Forests. O modelo adestrado devólvese polo procedemento.
- Declarar unha función de especie prevista dentro do IrisModel. Utilízase para facer previsións en función de 4 factores de entrada (medicións de flores). Tanto a previsión (especies de flores) como a probabilidade de predición son devoltas polo algoritmo.
- Cambia o construtor en IrisModel para que cargue o conxunto de datos Iris e adestre o modelo se falta no cartafol. Isto resolve o problema de adestrar repetidamente novos modelos. A biblioteca joblib utilízase para cargar e gardar modelos.
Aquí está o código completo:
Espero que a lista anterior e os comentarios facilitasen a comprensión aínda que se creara unha cantidade considerable de código. Agora que se desenvolveu este modelo, publiquemos as súas capacidades de predición sobre a API REST.
Construíndo unha API REST completa
Volve ao ficheiro ml_model.py e purga todos os datos. O boilerplate será esencialmente o mesmo que o que tiñas antes, pero deberíamos comezar de novo cun ficheiro en branco.
Esta vez só definirá un punto final, que é o que se utiliza para determinar o tipo de flor. Este punto final chama a IrisModel.predict species(), que se declarou na sección anterior, para realizar a predición.
O tipo de solicitude é o outro gran cambio. Para transmitir parámetros en JSON en lugar de URL, recoméndase que use POST cando o use aprendizaxe de máquina APIs.
A frase anterior pode soar a galimatías se es un científico de datos, pero iso está ben. Para deseñar e implantar modelos, non é necesario ser un experto en solicitudes HTTP e API REST.
As tarefas para ml model.py son poucas e sinxelas:
- Debes importar o seguinte desde o ficheiro jaymlmodel.py creado anteriormente: uvicorn, FastAPI, IrisModel e IrisSpecies.
- Crea instancias de FastAPI e IrisModel.
- Declara unha función en https://127.0.0.1:8000/predict para facer predicións.
- O método IrisModel.predict species() recibe un obxecto de tipo IrisSpecies, transfórmao nun dicionario e despois devólvoo. Os retornos son a clase esperada e a probabilidade prevista.
- Use uvicorn para executar a API.
Unha vez máis, aquí está o código completo do ficheiro xunto cos seus comentarios:
Iso é todo o que tes que facer. No seguinte paso, imos probar a API.
Probando a API
Volva a introducir a seguinte liña no Terminal para executar a API: uvicorn ml_model:app –reload
Así aparece a páxina de documentación:
Así que é todo por hoxe. Na parte posterior a isto, imos concluír.
Conclusión
Hoxe aprendeu o que é FastAPI e como usalo, utilizando tanto un exemplo simple de API como un exemplo sinxelo de aprendizaxe automática. Tamén aprendeu a crear e ver a documentación da API, así como a probala.
Iso é moito para unha soa peza, así que non te estrañes se son necesarios algunhas lecturas para comprender correctamente.
Feliz codificación.
Deixe unha resposta