La manera mas facil y rapida de subir a la Web tus modelos de inteligencia artificial utilizando Python y Streamlit

Martin vega
LCC-Unison
Published in
5 min readJan 12, 2021

En este blog te explicare como subir tus modelos de inteligencia artificial utilizando la aplicación Streamlit Sharing y todo esto usando Python y GitHub.

Pasos a seguir:

  • Primero que nada debes tener un modelo el cual subir y que busques que la gente pruebe, en este ejemplo utilizaré un modelo que cree para clasificar tweets si son pro o en contra del gobierno (todo el código estará gratis en GitHub)
#Este es como se crea el modelo con sklearn (ya sabes que despues lo tienes que entrenar y probar)from sklearn.svm import SVC # Maquina de vector de soportesClasificadorTweets = SVC(gamma=0.01, C=100,probability=True, kernel= 'rbf')
  • Después de eso lo vas a guardar en un formato .pkl con la librería pickle ya que vamos a crear un nuevo archivo para crear la aplicación web de tu modelo.
#importamos librerías
import pickle
from pickle import dump
#Le damos el nombre que queremos
nombreArchivo = 'ClasificadorTweets.pkl'
#Lo guardamos ya como .pkl
pickle.dump(ClasificadorTweets, open(nombreArchivo, 'wb'))
  • Ahora vamos a crear nuestra página web, donde primero crearemos un archivo nuevo .py en mi caso lo llamaré TutorialStreamlit.py:
#Empezaremos bajando las librerías necesarias#Librería para usar los componentes de Streamlit
import streamlit as st
#librería para poder desempaquetar nuestro modelo
import pickle
from pickle import dump
#Con st.title creamos un título para nuestra aplicación
st.title('Como subir GRATIS a la Web tus modelos de inteligencia artificial')
#Dentro de la librería tenemos la opción de poder escribir con
#markdown
st.markdown('''
Este es un ejemplo para poder usar Streamlit con un modelo que clasifica texto según que sí está en contra o a favor del gobierno Mexicano.
''')
#Aquí desempacamos nuestro modelo
nombreArchivo = 'ClasificadorTweets.pkl'
modeloCargado = pickle.load(open(nombreArchivo, 'rb'))
#Lo guardo en una dupla porque yo guarde mi modelo y para poder convertir el texto utilizo Tfidf
ClasificadorTweets, Tfidf_vect = modeloCargado
#Con st.text_input hacemos un widget para tener un input del usuario
input = st.text_input(label='Inserte su texto', value='Amlo presidente')
#Convertimos el input a Tdfidf
prediccionEjemplo = Tfidf_vect.transform([input])
resultadoPorcentaje = ClasificadorTweets.predict_proba(prediccionEjemplo)aux = []
for i in resultadoPorcentaje:
for j in i:
conservador = j
aux = [j]
if conservador <= 0.5:
#Con st.write mostramos texto en pantalla
st.write('Resultado: A favor del gobierno')
else:
st.write('Resultado: En contra del gobierno')
st.write('Result: {}'.format(resultadoPorcentaje))

Para poder correr nuestra aplicación utilizamos la consola de comandos y escribimos:

streamlit run TutorialStreamlit.py

Se nos debe de abrir una pestaña en nuestro navegador con nuestra aplicación terminada:

Para cerrar el proceso lo único que tenemos que hacer es ir a la consola de comandos y presionamos ctrl + c

  • De ahí tenemos que encontrar que librerías necesitamos para que nuestro modelo funcione en la web y esto es muy fácil si utilizaste un ambiente virtual, pero si no lo único negativo es que vas a tardar más en encontrarlas y para esto nos vamos a ir a nuestra terminal donde nos vamos a dirigir a escribir dos comandos:
pip freeze > requirements.txt
cat requirements.txt

Se nos creará un archivo requirements.txt donde nos aparecerán todas las bibliotecas de python que tenemos instaladas.

  • Consiguiente borraremos las bibliotecas que no necesitamos para quedarnos con las que funcionan con nuestro modelo, donde en mi caso me quedaría con estas:
pickle-mixin==1.0.2
pickleshare==0.7.5
streamlit==0.71.0
scikit-learn==0.23.2
  • Ahora subiremos nuestra carpeta de trabajo a github, donde debemos tener el archivo de requirements.txt, el modelo a usar y nuestro programa en python.
  • Vamos a irnos a Streamlit, nos registramos con Github
  • Algo importante es que si te acabas de registrar muy probablemente no tengas acceso a poder subir tu aplicación web, pero no te preocupes, lo único que tienes que hacer es solicitar acceso y en cuestión de unos pocos días te lo darán.

A continuación te pongo una serie de imágenes que serán los pasos para solicitar el acceso:

  1. Debes picarle al primer link de la imagen.

2. Luego tendrás que rellenar un formulario para que te otorguen acceso.

3. Terminando el formulario esperarás a que te contacten por correo.

  • Ya que te hayas registrado y te hayan dado acceso para poder subir aplicaciones, te irás a este link https://share.streamlit.io/ y esta páginase te debe de mostrar:
  • Tendrás que picarle al botón que dice ‘New app’, donde te saldra un menu desplegable donde haremos click a la casilla que dice ‘From existing repo’
  • Luego seleccionaremos el repositorio en donde tenemos los archivos que subimos a github, seleccionamos la Brach en la que tenemos nuestros archivos, casi por último sería en donde dice ‘Main file path’, darle el nombre de nuestro archivo donde contiene nuestra aplicación web y ya entonces haremos click en el botón de ‘Deploy!’ para que inicie nuestra aplicación web.
  • Aquí dejamos que Streamlit descargue los documentos necesarios.
  • Para finalizar, tendremos corriendo nuestra aplicación web con nuestro modelo de inteligencia artificial en la red.

--

--