(El bueno) 2021LM – Sobre la traducción con IA (I)

Crónica de mis problemas al usar un software de traducción con IA. Desde fallos con LLMs locales hasta errores con la API de Gemini. Una historia de bugs.

Este texto ha sido generado por Gemini 2.5/3.1 a partir del audio del autor. El contenido y las ideas son íntegramente del autor; la redacción ha sido asistida por IA.


¿Qué pasa, gallinicas mías? Aquí vuestro reportero más dicharachero de barrio Sésamo, grabando este audio directamente desde un S24 Ultra. ¿La razón? Pues que a uno se le olvidó poner a cargar el iPhone anoche y esta mañana andaba con la batería justa para ir a la compra. Ya sabéis que los viernes no trabajo, así que me tocaba a mí hacer los recados del fin de semana.

La cosa es que tuve que ir dos veces. La primera fui demasiado temprano y, claro, Inconveniente me recordó que faltaban las tortas para los burritos. Así que, vuelta al súper. Y fue justo ahí, en mitad del segundo viaje, cuando me di cuenta del percal de la batería. Menos mal que los iPhone son como son: te dicen que no tienen batería, pero con un 1% aguantan medio día. Una pequeña odisea matutina que no era más que el preludio de la odisea tecnológica que os vengo a contar.

Porque, como siempre, primero viene el hype, la expectación, y luego llega el tío de la rebaja. Hoy os voy a hablar de una aplicación de traducción que, sinceramente, tiene más pegas que un colegio en septiembre. Pero antes, un pequeño inciso.

Paréntesis Kafkiano: Una Charla con Gemini

Próximamente vais a ver un par de «pataticas» (mis pequeños experimentos sonoros) muy estrambóticos, creados con Notebook LM de Google. Resulta que el otro día, mientras esperaba una llamada, me lié en una conversación surrealista con Gemini. Empecé preguntando por la constante de la gravitación universal y terminamos debatiendo sobre el sentido de la vida. Una locura.

Publicaré la conversación completa en mi blog, rfog.es, para que veáis lo kafkiano que puede llegar a ser un LLM cuando está de dulce. Y que conste, para los que se quejan, que a mí Gemini me está funcionando de cojones, tanto en lo personal como en el trabajo. Sin ir más lejos, el otro día me salvó el culo con una API REST. Estaba convencido de que el fallo era del servidor, pero Gemini me generó un script curl y encontró el problema en mi código: un valor que, según la documentación, tenía que ser ‘1’ aleatoriamente. ¡Toma ya!

La Herramienta de Traducción: Un Pozo de Problemas

Volvamos al lío. El programa de traducción del que os hablaba es un desastre. Para empezar, se queda colgado sin motivo aparente. Simplemente se para, sin errores en el log ni nada. Sospecho que se queda esperando una respuesta del LLM local que nunca llega, y la única solución es matar el proceso del navegador y todas las consolas abiertas. Un simple reinicio no basta, hay que aniquilarlo todo.

Pensé que podría ser culpa de mi LLM local. Aunque uso un modelo potente de 7 u 8 billones de parámetros, a veces falla diciendo que los placeholders no funcionan bien y que necesitaría un modelo superior. Probé con uno de 109 billones de parámetros y… el mismo fallo. El problema no es el modelo; es el software que no recoge bien la respuesta, porque yo veo en la consola de LM Studio que la respuesta se ha generado. Un bug de esos que los barbudos dejan para el final por lo complicados que son.

Plan B: ¿Y si Pagamos por la API de Gemini?

Cansado del LLM local, decidí probar con la API de Google. Me generé un token y a correr. El primer modelo de Gemini que probé estaba obsoleto. ¿Me avisó el programa? No. Tuve que descubrirlo yo mirando la consola después de media hora. El segundo modelo que elegí, más moderno, daba otro error críptico en un campo que impedía su uso. De nuevo, cero feedback en la interfaz.

Finalmente, con Gemini 1.5 Lite, la cosa empezó a funcionar. ¡Aleluya! Pero la alegría duró dos minutos. La API empezó a devolver mensajes de «estoy muy ocupado, prueba en otro momento». ¡Pero si estoy pagando tokens, coño! Me da igual que tardes más o menos, ¡estoy gastando dinero! ¿Encima de que pago, no funciona? Venga, hombre, no me toques los cojones.

Victoria Pírrica y Fallos Inexcusables

Tras un sinfín de arranques, paradas y «mataciones» de procesos, conseguí traducir una revista de ciencia ficción de 200 páginas (lo que equivale a un libro de 400). El coste fue ridículo, unos 50 céntimos. Pero el proceso fue un infierno. El programa no reintenta bien los fallos y, para colmo, no hace algo tan básico como cambiar la etiqueta de idioma en los archivos XHTML de ‘en’ a ‘es’, lo que rompe la separación de sílabas y otras funciones en los lectores de eBooks.

Podría forquear el proyecto, que es Python, y arreglarlo. ¿Ganas? Pocas, o ninguna. Si tengo que hacerlo, me monto yo mi propia herramienta en C# y me aseguro de gestionar bien los errores. Como dice mi jefe, el 80% del desarrollo lo haces enseguida. Del 20% restante, el 10% cuesta bastante, el 5% cuesta mucho, y el último 5% es ese grano en el culo que no te deja sentarte durante semanas. Este programa se quedó en el 80%.

Sinceramente, ¿qué se puede esperar de Python? Esta mierda y esta basura. Tienes que estar encima constantemente. Y para eso, pues ya me diréis. En fin, no olvidéis esos hechos habitualizaros y recordad los «pataticas» kafkianos que se vienen.

¡Que no os la pique un pollo belga! Ademonio.

LM2018 – Scripts y primeros pasos con la IA en mi MacBook Pro

Descubre mi experiencia real con el MacBook Pro M5 Max con 128GB de RAM. Automatización, scripts, y la ejecución de LLMs locales para traducción.

Este texto ha sido generado por Gemini 2.5/3.1 a partir del audio del autor. El contenido y las ideas son íntegramente del autor; la redacción ha sido asistida por IA.


¡Muy buenas, gallinicas mías! Aquí vuestro reportero de confianza para seguir desgranando las primeras impresiones con mi nueva bestia negra, el MacBook Pro M5 Max con 128 GB de RAM, el máximo que permite la plataforma. Hoy os voy a contar los avances en mis flujos de trabajo, los desafíos que me he encontrado y una joya inesperada en forma de software.

Una de las primeras cosas que hice fue instalar TG Pro, una utilidad para monitorizar temperaturas que compré allá por 2009 con mi primer iMac. Esto me hizo dudar de mis propios recuerdos. Siempre digo que soy un switcher desde 2009, pero es posible que fuera incluso antes, en 2007. Recuerdo haber usado Leopard, que tenía fama de ir bastante mal, antes de que Snow Leopard lo arreglara todo. De hecho, cuando salió el primer iPad, que importé de Estados Unidos, yo ya tenía un Mac desde hacía al menos un año. ¡Quién sabe, igual soy uno de los primeros switchers de España!

El Desafío de la Automatización: Mis Scripts para el Dock

Entrando en materia, he estado trabajando en los scripts que os comenté. La idea es simple: uno para montar unidades y lanzar aplicaciones cuando conecto el dock, y otro para desmontar todo y cerrar apps cuando lo desconecto. La base es un script en ZSH que carga una configuración con listas de programas, dispositivos Bluetooth y unidades de disco a gestionar.

¿Funciona? Relativamente. Me he topado con limitaciones que no son del script, sino de macOS. Por ejemplo, utilizo una utilidad de Homebrew para desconectar dispositivos Bluetooth, pero el sistema operativo simplemente ignora la orden. Es una de esas pequeñas frustraciones que llevan años en macOS y que no tienen sentido. Si le das una orden, debería ejecutarla.

Algo parecido ocurre al desmontar unidades. A veces, macOS se niega a desmontar un disco, incluso el de Time Machine, y tengo que forzarlo manualmente. Investigaré si hay alguna opción de forzado que pueda añadir al script. Son pequeños escollos que me obligan a ejecutar las cosas dos veces o a intervenir, pero la base está ahí y seguiré puliéndola este fin de semana.

Mi «Panel de Control» Personal: Un Centro de Productividad

Mi objetivo principal es crear un panel centralizado para mis flujos de trabajo. Ahora mismo, para procesar mis audios, tengo un script que abre dos ventanas del Finder (origen y destino) y una terminal. Arrastro el audio, lo renombro y ejecuto los comandos para eliminar ruido, transcribir con IA, generar una entrada de blog y subirla. Funciona, pero quiero llevarlo más allá.

Para organizarme, he creado una carpeta en iCloud llamada «Panel» a la que le he dado un color verde para que destaque en el Finder y la he añadido al Dock. Dentro tengo accesos directos a los scripts y herramientas. Al hacer clic en el Dock, se despliega una tira con todo lo que necesito. Es un sistema funcional, pero mi visión final es una aplicación nativa.

Imagino un panel, ya sea en el Dock o en la barra de menús, donde pueda arrastrar un archivo de audio. Al soltarlo, se abriría un diálogo para automatizar los metadatos: que busque el último número de secuencia, que me dé a elegir el tipo de contenido con un selector, y que me permita introducir el título. Finalmente, me daría opciones para procesar el audio, transcribirlo y generar el blog usando un LLM local o uno de pago. Esa es la meta.

La Joya Inesperada: Una Herramienta de Traducción con IA Local

Ayer, gracias a una recomendación de Mosquetero Web, encontré algo que me ha ahorrado una frustración enorme. Me pasó un enlace a un proyecto open source para traducir textos usando LLMs locales. Mi primera reacción, como casi siempre, fue de escepticismo. Pensé: «seguro que esto es una mierda». Pero he de admitir que me equivoqué por completo.

Esta herramienta es una maravilla. Es un ejecutable autocontenido, un bundle, que te bajas, haces doble clic y funciona. Sin dependencias de Python ni complicaciones. Es básicamente lo que yo habría intentado construir, pero mucho mejor de lo que tendría la paciencia de crear. Tiene un panel web muy cuidado donde arrastras los libros, eliges idiomas, modelos y configuraciones. Es simplemente cojonudo.

Explorando el Universo de los LLM: Potencia y Calidad en mi Mac

Gracias a esta herramienta, me he sumergido en la ejecución de modelos de lenguaje en local. He probado el modelo Q-WEN de 35 mil millones de parámetros, que según la web del proyecto es el mejor para traducir al español. La diferencia entre la versión de 4 bits y la de 8 bits es abismal. La de 8 bits tiene una calidad literaria y una capacidad de interpretación muy superiores.

Traduje el editorial de la última revista Analog y el modelo de 8 bits no solo traduce, sino que interpreta el contexto y lo cuadra todo a la perfección. Tardó unas 8 o 9 horas en procesarlo, tiempo durante el cual estuve haciendo otros experimentos con IA generativa de imágenes. El Mac, con el traductor y DEVONthink en marcha, llegó a usar unos 100 GB de RAM, dejándome todavía 28 GB libres. ¡Es una gozada!

El equipo se calienta, sí. El TG Pro marcó picos de 71 grados, pero sin llegar a ser molesto. Podría tenerlo en las rodillas, aunque se calentaría más. Con los ventiladores a máxima velocidad, la temperatura baja a unos 50 grados, pero normalmente se mantiene en 70 con los ventiladores a media velocidad, emitiendo un soplido audible pero no molesto. Eso sí, con esta carga de trabajo, la batería se consume a una velocidad de vértigo.

«Uncensored Heretic»: La IA sin Tapujos

He descubierto una nueva categoría de modelos: los «Uncensored Heretic». Son LLMs entrenados específicamente para ser extremadamente directos, evitando cualquier tipo de sesgo de asistente servil o corporativo. Buscan recuperar la capacidad de razonamiento que a veces se pierde cuando las empresas liman demasiado las respuestas para que sean inofensivas. El siguiente que probaré será uno de estos, la versión 3.6, que promete ser la caña.

He estado comparando. Un modelo de 30 mil millones de parámetros a 8 bits tiene un rendimiento similar a uno de 70 mil millones a 4 bits, pero este último tiene mucho más conocimiento. La clave podría estar en los modelos que pueden buscar en internet, donde uno más pequeño pero conectado podría superar a uno más grande pero aislado.

Pequeños Obstáculos y Futuras Mejoras

La herramienta de traducción tiene una pequeña pega: cada vez que la ejecuto, macOS me pide autorización de seguridad, probablemente por un tema con el certificado de Apple. Antes de reportarlo, intentaré autofirmar la aplicación con unos comandos que me sugirió Gemini. También pienso escribir al desarrollador para sugerirle una mejora: la gestión de géneros para evitar errores comunes, como traducir «ships» (barcos) por «naves» (espaciales).

Esta mañana, un oyente, Marco, me envió un enlace a una herramienta open source para gestionar suscripciones de YouTube, con resúmenes y un visor sin distracciones. Aunque no es exactamente lo que busco para mi panel, es un gran ejemplo. Si encuentro herramientas así de buenas, no necesito construirlo todo yo. Puedo usar mi carpeta en el Dock para lanzar estas maravillas y listo.

De momento, el ansia viva por el nuevo Mac se ha aplacado. Ya tengo flujos funcionales y el camino está más claro. Seguiré probando modelos y puliendo detalles, pero la bestia ya está empezando a ser domada. Y como siempre os digo, no olvidéis sospechosos habitualizaros, ¡que no os la pique un pollo belga!

2015LM – Más negro y más grande

La espera de mi nuevo equipo me inspira a planificar proyectos de IA, desde un lector de noticias inteligente a entrenar LORAs. Y de paso, rajo de Python.

Este texto ha sido generado por Gemini 2.5/3.1 a partir del audio del autor. El contenido y las ideas son íntegramente del autor; la redacción ha sido asistida por IA.


¡Qué pasa, gallinicas mías! Aquí vuestro reportero más dicharachero con un batiburrillo de ideas mientras espero mi última adquisición. Mi «cosa grande y negra» ya se está moviendo por China y, aunque tenía la esperanza de que llegara de un día para otro, parece que se hará de rogar hasta el lunes o martes. ¡Ojalá sea el lunes para pillarla en casa!

Esto me ha recordado a cuando compré uno de los primeros Kindle DX en Estados Unidos. Gracias a la magia de los husos horarios, el cálculo final fue que tardó solo ocho horas en llegar desde la compra. En realidad, esperé día y medio, porque los amigos de aduanas en Alicante lo pararon y me tocó ir a negociar. Intenté que lo pasaran como un libro, pero no coló y tuve que pagar el pico correspondiente a un dispositivo electrónico con pantalla.

Mi gato, la aspiradora y la curiosidad

Cambiando de tercio, teníamos pánico de que nuestro gato huyera despavorido de la aspiradora. Pues nada más lejos de la realidad. El tío va siguiendo a Inconvenient mientras limpia, asomando la cabecita para no perderse detalle. Es un gato curioso, pero no en el sentido de cotilla, sino en el de limpio. Porque, para los incultos, «curioso» también significa pulcro, una acepción menos común pero igualmente válida. Esto me recuerda a las viñetas de los TBO de mi época, pero mejor no divago más, que la ancianidad es lo que tiene.

Planes para la bestia: Un lector de noticias con esteroides

He dejado de pagar InnoReader y, con el OPML que tengo en Devonthink, voy a construir mi propio agregador de noticias. Pero no será uno cualquiera. La idea es que un LLM procese los feeds y me construya un resumen diario, agrupado por temas y ordenado de más a menos interesante para mí. Aquí viene lo bueno: si varios medios publican sobre lo mismo, como una nueva beta de Apple, el sistema bajará todas las noticias, extraerá los puntos comunes y las diferencias, y me presentará un informe consolidado. Así me evitaré leer veinte veces la misma historia sobre la retirada de Tim Cook.

La idea es que, con el tiempo, el sistema aprenda y, si sale una noticia relacionada con una anterior, solo me muestre las novedades junto a un pequeño recordatorio. También planeo integrar resúmenes de vídeos de YouTube, algo que ya hago con Copilot, que por cierto, genera resúmenes bastante mejores que los de InnoReader. Todo esto se ejecutará en local, en mi nueva máquina, aunque quizás termine usando algunos tokens en remoto. Incluso contemplo la posibilidad de publicar estos resúmenes en un feed RSS privado en mi blog.

¿Por qué C# y no Python? Mi cruzada personal

Con la ayuda de Gemini, he decidido que todo este proyecto lo haré con C# y otras herramientas. ¿Por qué no Python, el rey de la IA? Porque, seamos claros, Python es una puta mierda pinchada en un palo. No soporto que, a estas alturas del siglo XXI, sus entornos virtuales sigan usando rutas absolutas. La solución de crear un requirements.txt para que cada equipo genere el entorno en una ruta local diferente me parece una chapuza.

Con C# me siento cómodo. Tengo Avalonia para la interfaz gráfica, que usa XAML igual que en Windows, lo que facilitaría una futura migración. Sí, todo sale primero en Python en el mundo de la IA, pero sus carencias son horrorosas. El manejo de dependencias es un desastre: te obliga a usar versiones específicas de paquetes, y si uno tiene un fallo de seguridad, o te aguantas o rehaces todo. Esto pasa porque muchos de sus desarrolladores son «vivecodings», no ingenieros de software, y los demás pagamos el pato. Así que mis scripts actuales, como los que limpian estos audios, los reescribiré en C#.

Más allá de los resúmenes: Experimentando con LORAs

Otro de los experimentos que quiero hacer con la «cosa grande y gorda» es reentrenar un modelo, o más bien, modificarlo creando un LORA. Por ejemplo, me encantaría meterle todas las novelas de Julio Verne para crear una IA que sea una verdadera experta en su obra. Ya lo intenté con LM Studio, pero no pudo con todos los libros y las respuestas que daba eran incompletas. Con un LORA, el resultado debería ser infinitamente mejor.

Mientras escuchaba el último podcast de Apple Coding con Julio César Fernández y Oliver Navani, pensaba en todo esto. Con todo el respeto, a veces me da la sensación de que fuman algo, porque sus planteamientos son un poco exagerados. Me gustaría que Oliver publicara esos ficheros de su «Open Caca» para ver si es oro todo lo que reluce.

Y a todo esto, ¿qué pasa con los agentes de IA?

Entiendo lo que hacen los agentes, pero no les termino de ver la utilidad práctica para mi día a día. ¿Qué diferencia real hay entre subir este audio a un agente para que lo procese, o simplemente dejarlo en una carpeta y pulsar un botón? Para mí, ninguna. Para hacer preguntas ya tengo el chat. Es como tener un martillo pero no saber dónde clavar. No me termina de cuadrar.

En el trabajo es impensable. Si le digo a mi jefe que he conectado un agente al código fuente de la empresa, heredo de forma fulminante. Quizás en un futuro, si le convenzo para montar un Mac Studio con 512 GB de RAM en su casa, podría usarlo en remoto para que los agentes me ayuden a refactorizar la interfaz de nuestra aplicación, pero por ahora, es ciencia ficción.

Una inversión justificada (o eso espero)

Alguno se preguntará por qué no esperé a un nuevo Mac Studio. La respuesta es simple: no sé cuándo saldrá un modelo con los 128 o 256 GB de RAM que necesito. Así que me lancé a por el MacBook Pro. Ha sido una pasta, sí. Ya podéis estimar lo que me he gastado. Espero que la paga extra de mayo me sirva para igualar un poco los números y no destrozar mi nivel de ahorro.

En fin, eso es todo por ahora. Os iré manteniendo al día con los avances de la «cosa grande y negra». No olvidéis sospechosos habitualizaros y que no os la pique un pollo belga. ¡A demonio!