#python
#aprendizaje_automático
#modelo_ML

Despliegue de su modelo de aprendizaje automático con Python

7/21/2023

Despliegue de su modelo de aprendizaje automático con Python cover image

Cuando se trabaja en el campo de la ciencia de datos, generalmente se enfrenta a un nuevo desafío después de terminar un largo ciclo de capacitación, ajuste y mejora. Felicitaciones por crear un modelo de ML que tiene un buen rendimiento y responde a sus necesidades. Ahora, el desafío que tiene entre manos es cómo puede entregar esta buena pieza de tecnología a los usuarios previstos. O tal vez, ¿cómo puede comunicar de manera efectiva su resultado con las partes interesadas de su empresa? O incluso, ¿cómo puede compartir los resultados de su modelo con sus colegas de manera efectiva para una mejor colaboración?

A veces, implementar el aprendizaje automático puede ser difícil, ya que usaremos tecnologías y técnicas fuera del conjunto de habilidades habitual necesario para construir los modelos.

En este artículo, vamos a descubrir una forma de implementar modelos de aprendizaje automático usando solo Python. Y en el camino, construiremos un modelo de traducción automática y una página web.

Así que aquí están los pasos que vamos a ver:

  1. Usar modelos de traducción automática Huggingface.
  2. Descubrir Anvil y crear una interfaz de usuario web para nuestro modelo.
  3. ¡Conectando backend y frontend y sirviendo al mundo nuestro trabajo!

Construir modelo de traducción automática

Huggingface es una comunidad de IA que trabaja para "democratizar el buen aprendizaje automático". Bajo esta iniciativa, puede encontrar muchos modelos capacitados en [diferentes tareas de aprendizaje automático] (https://huggingface.co/models): segmentación de imágenes, texto a voz, generación de texto... ¡y también traducción automática!

La traducción automática es simplemente una tarea de traducción entre dos idiomas realizada por un software, en nuestro caso, un modelo de aprendizaje automático construido con transformadores.

Un transformador es una arquitectura de aprendizaje profundo basada en la atención. ¡Hagámoslo funcionar en su máquina!

Usaremos transformers, una biblioteca de python para descargar el modelo MT y realizar una traducción.

antorcha de instalación de pipa
pip instalar transformadores

Después de instalar los paquetes necesarios, importe los siguientes módulos:

de la importación de transformadores MarianTokenizer, MarianMTModel
de escribir lista de importación

Consigamos un modelo que traduzca una oración del alemán al inglés. Necesitamos el nombre del modelo:

src= "de"
trg= "es"
mname= f'Helsinki-NLP/opus-mt-{src}-{trg}'

Ahora importemos el modelo entrenado y el tokenizador usando las siguientes líneas:

modelo = MarianMTModel.from_pretrained(mname)
tok = MarianTokenizer.from_pretrained(mname)

El tamaño de descarga es de aproximadamente 300 mb, después de terminar, puede almacenar el modelo en un directorio local utilizando lo siguiente:

modelo.save_pretrained("./models/de_en/")
tok.save_pretrained("./models/de_en/tok")

Vamos el modelo:

text="ich habe keine ahnung"
gen = modelo.generar(**tok.prepare_seq2seq_batch(src_texts=[texto], return_tensors="pt"))
palabras: List[str] = tok.batch_decode(gen, skip_special_tokens=True)
imprimir (palabras [0])

Ahora deberías tener la traducción al inglés de la oración almacenada en words[0].

Descubra Anvil y cree una interfaz de usuario web

Anvil es un marco y una pila de soluciones que le permiten crear aplicaciones web utilizando solo código Python. Tiene un editor de arrastrar y soltar para crear una interfaz de usuario web y le permite conectar el código de su máquina local a la interfaz de usuario que crea y aloja su aplicación brindándole un enlace que puede compartir.

Entonces, comencemos con la creación de una aplicación desde [aquí] (https://anvil.works/build). Elija la aplicación en blanco y luego el diseño de materiales.

Debería ver algo como esto:

Yunque

Ahora contaré contigo para usar el editor y construir algo similar a lo siguiente:

Editor de yunque

En esta interfaz de usuario simple, tenemos dos menús desplegables para elegir los idiomas de origen y destino. También tenemos un TextBox para ingresar el texto fuente y un componente richText para mostrar el texto traducido. También puede ver un botón para iniciar la tarea de traducción.

Para sincronizar con los fragmentos de código que verá a continuación, asigne las mismas ID a los componentes. A continuación puede encontrar un ejemplo de dónde puede establecer la identificación de un componente:

Componente de cambio de nombre de Anvil Editor

Los ID que estamos usando son:

Función al hacer clic

Hemos añadido un botón que se utiliza para iniciar la traducción. Desde su editor, haga clic en el botón y luego desplácese hacia abajo en el panel de propiedades. En la parte inferior, verá una sección de eventos. En la zona de texto junto a "hacer clic", ingrese "traducir" y luego haga clic en la flecha a la derecha de esta zona de texto. Esto lo llevará a la vista de código donde verá un código Python generado automáticamente. Encontrará que Anvil ha agregado automáticamente una función llamada traducir. Se llamará cada vez que se haga clic en el botón de nuestra interfaz de usuario.

Así es como debería verse la función:

def traducir(self, **event_args):
  """Este método se llama cuando se hace clic en el botón"""
  src_lang=self.source_lang.selected_value #obtener el idioma de origen seleccionado
  dest_lang=self.dest_lang.selected_value #obtener el idioma de destino seleccionado
  text=self.source_text.text #obtener el texto escrito en el idioma de origen
  #llamar a la función del servidor
  translation_text=anvil.server.call("traducción",texto,src_lang,dest_lang)
  #escribir el texto traducido en la interfaz de usuario
  self.texto_traducido.content=texto_traducido

Esta función realiza 3 tareas principales:

  1. Obtenga información de la interfaz de usuario
  2. Envía la información a nuestro backend usando la función de servidor “traducción” (lo explicaremos en la siguiente sección)
  3. Envíe el texto traducido a la interfaz de usuario.

Función del servidor

Centrémonos en esta línea de código:

translation_text=anvil.server.call("traducción",texto,src_lang,dest_lang)

Usamos anvil.server.call para llamar a una función de servidor llamada translation que definiremos en nuestro código backend en la máquina local. Esta función servirá como conexión entre la interfaz de usuario web y el código de back-end que se ejecutará en nuestro modelo de traducción automática.

Como habrás notado, también enviamos los parámetros de esta función en la función anvil.server.call.

Implementar nuestro modelo MT

Primero instalemos yunque

pip instalar yunque-enlace ascendente

Ahora hemos construido nuestra interfaz web en el editor de yunque y tenemos bloques de código básicos para ejecutar nuestro modelo de traducción automática y hacer una traducción.

El siguiente paso es definir la función del servidor que hemos discutido en la sección anterior. Aquí está el código de la función:

@anvil.server.callable
def traducción(texto,origen,destino):
  lang_code={"Español":"es",
        "alemán":"de",
        "francés":"fr",
        "español":"es"}
       model=MarianMTModel.from_pretrained("./models/"+lang_code[src]+"_"+lang_code[dest])
  tok=MarianTokenizer.from_pretrained("./models/"+lang_code[src]+"_"+lang_code[dest]+"/tok")
  gen = modelo.generar(**tok.prepare_seq2seq_batch(src_texts=[texto], return_tensors="pt"))
  palabras: List[str] = tok.batch_decode(gen, skip_special_tokens=True)
  devolver palabras[0]

La función tomará los 3 parámetros enviados desde la interfaz, convertirá los idiomas de origen y destino a los códigos de idioma respectivos y luego cargará los modelos y calculará la traducción y devolverá el resultado. La forma de declarar esta función a yunque como una función de servidor es usando el decorador @anvil.server.callable.

Tenemos un último paso que hacer para conectar el código de back-end que podemos ejecutar en un cuaderno jupyter a nuestra aplicación yunque. Vaya al editor en línea de yunque, haga clic en el ícono de ajustes y luego haga clic en "Enlace ascendente...". Ver la pantalla de abajo Enlace ascendente de Anvil Editor

Verá aparecer una ventana emergente, luego haga clic en "Habilitar enlace ascendente del servidor para esta aplicación" para obtener el código de conexión que copió.

Enlace ascendente del yunque

Pegue el código en la siguiente línea de código:

anvil.server.connect("código aquí")

Esta línea iniciará un servidor que conecta su script de código local o jupyter notebook a la aplicación yunque con la función traducción registrada como una función de servidor.

Último paso

Hasta este punto, tiene su servidor backend ejecutándose con una función de servidor que carga el modelo de traducción automática y realiza la traducción después de tener en cuenta los parámetros enviados desde el frontend. Esta figura resume lo que hemos implementado juntos hasta ahora.

Enlace ascendente del yunque

Un último paso es ejecutar la aplicación haciendo clic en el botón ejecutar en la parte superior central del editor de yunque.

Después de ejecutar la aplicación, verá en la esquina superior derecha un botón "publicar esta aplicación" que le dará un enlace que puede compartir para acceder a la aplicación y hacer su traducción.

Conclusión

Al seguir este artículo, ha podido implementar un modelo MT y crear una interfaz web para usarlo. Todavía queda mucho por descubrir sobre cómo implementar de manera efectiva un modelo usando yunque, pero ahora tiene los conceptos básicos para comenzar su viaje de implementación y ampliar el potencial de su conocimiento previo en Python para hacer mucho más.

Ven a uno de nuestros talleres gratuitos

Comience su carrera como científico de datos con nuestros talleres gratuitos, que se basan en un plan de estudios adaptable y están guiados por expertos de la industria.


Career Services background pattern

Servicios profesionales

Contact Section background image

Mantengámonos en contacto

Code Labs Academy © 2024 Todos los derechos reservados.