{"id":208,"date":"2026-05-09T18:30:10","date_gmt":"2026-05-09T18:30:10","guid":{"rendered":"https:\/\/rfog.es\/?p=208"},"modified":"2026-05-09T18:30:10","modified_gmt":"2026-05-09T18:30:10","slug":"traduciendo-libros-ia-local-qwen-gema-gemini","status":"publish","type":"post","link":"https:\/\/rfog.es\/?p=208","title":{"rendered":"2022LM &#8211; Sobre la traducci\u00f3n con IA (II)"},"content":{"rendered":"<p><small><em>Este texto ha sido generado por Gemini 2.5\/3.1 a partir del audio del autor. El contenido y las ideas son \u00edntegramente del autor; la redacci\u00f3n ha sido asistida por IA.<\/em><\/small><\/p>\n<hr \/>\n<h2>Un peque\u00f1o tropiezo y un ayudante peludo<\/h2>\n<p>\u00bfQu\u00e9 pasa, petardos m\u00edos? Antes de meternos en faena, os debo una disculpa por el error t\u00e9cnico de ayer. Estaba grabando con el S25 Ultra, pero a la hora de subir el audio, me li\u00e9 y volv\u00ed a procesar el archivo anterior. Un despiste tonto que ya est\u00e1 solucionado: el audio viejo ha sido borrado y el correcto ya est\u00e1 en su sitio. Esta es, por tanto, la segunda parte de mi aventura con las traducciones autom\u00e1ticas.<\/p>\n<p>Mientras me preparaba para continuar, la vida real interrumpi\u00f3 de la forma m\u00e1s tierna posible. Mi gato, el gordito, se peg\u00f3 un buen susto. Estaba tomando el sol tranquilamente en la ventana, se estir\u00f3 sobre una alfombrilla, resbal\u00f3 y acab\u00f3 en el suelo. El pobre se asust\u00f3 un poco, pero enseguida estaba pidiendo mimos y queriendo salir al jard\u00edn. \u00a1Estos ayudantes peludos siempre dan la nota!<\/p>\n<h2>Mis \u00faltimos proyectos de traducci\u00f3n sobre la mesa<\/h2>\n<p>Retomando el hilo, he seguido experimentando con la traducci\u00f3n de textos largos. Primero, termin\u00e9 de traducir los n\u00fameros de enero a junio de la revista <em>Asimov&#8217;s Science Fiction<\/em>. Unas 120.000 palabras que, como os coment\u00e9, me costaron alrededor de medio euro usando los servicios online de Gemini. La calidad, francamente, es muy buena.<\/p>\n<p>Luego me lanc\u00e9 a la aventura offline. Traduje el n\u00famero de mayo-junio de <em>Analog Science Fiction and Fact<\/em> usando un modelo local: QWEN 3.6 de 35 mil millones de par\u00e1metros, en su versi\u00f3n sin censura y \u00abher\u00e9tica\u00bb. El proceso fue una marat\u00f3n de 11 horas con mi MacBook Pro a pleno rendimiento, con los ventiladores a tope y los nodos de la GPU a unos 75 grados. \u00bfLa calidad? Es un poco inferior a la versi\u00f3n online, con peque\u00f1os detalles que se notan, pero para ser una traducci\u00f3n autom\u00e1tica local, es impresionante. Merece la pena solo por el placer de trastear.<\/p>\n<p>Mi \u00faltimo proyecto ha sido traducir <em>In the Balance<\/em>, el primer libro de una saga de nueve de Harry Turtledove. Es una ucron\u00eda fascinante: en plena Segunda Guerra Mundial, la Tierra es invadida por extraterrestres. La serie narra primero nuestra lucha por liberarnos y luego c\u00f3mo llevamos la guerra a su mundo con la tecnolog\u00eda que les hemos arrebatado. Este libro, de unas 240.000 palabras, me cost\u00f3 algo menos de un euro con Gemini, manteniendo la tarifa de medio euro por cada 100.000 palabras. Lo le\u00ed hace m\u00e1s de una d\u00e9cada y tengo muchas ganas de releer la saga entera, que no est\u00e1 traducida al castellano.<\/p>\n<h2>Reflexiones sobre autores y cafeteras ruidosas<\/h2>\n<p>A Turtledove, o \u00abel tortuguero\u00bb como a veces lo llamo, lo encuentro un autor peculiar. Su estilo no es especialmente \u00e9pico, es m\u00e1s bien&#8230; tortuguero. Recuerdo otro libro suyo en el que la Armada Invencible gana, pero al final los ingleses nos echan de all\u00ed, supongo que porque el autor es ingl\u00e9s. En esa novela mezclaba personajes hist\u00f3ricos como Lope de Vega y Shakespeare, haci\u00e9ndolos amigos con conversaciones interesantes, aunque de dudosa veracidad hist\u00f3rica.<\/p>\n<p>Hablando de sustos, mientras recordaba esto, \u00a1la cafetera se ha apagado de golpe y casi me da un infarto! Pero volviendo a la traducci\u00f3n del libro de Turtledove, tard\u00f3 unas dos horas y, a primera vista, parece que no ha fallado, aunque s\u00ed he notado problemas con los \u00abplaceholders\u00bb, esos marcadores de posici\u00f3n que usan los programas de traducci\u00f3n y que a los LLM a veces se les atragantan.<\/p>\n<h2>El desaf\u00edo t\u00e9cnico: c\u00f3mo domar a un LLM<\/h2>\n<p>El problema de los placeholders me lleva a una reflexi\u00f3n importante: los LLM no son programas deterministas en el sentido cl\u00e1sico, a menos que controles las semillas de generaci\u00f3n aleatoria. Hice una prueba con el modelo Command R Plus de 107B par\u00e1metros. Le puse una semilla fija (la 100), le pregunt\u00e9 por el sentido de la vida, cerr\u00e9 el programa, lo volv\u00ed a abrir con la misma semilla y el mismo prompt exacto, y me dio exactamente la misma respuesta. Son deterministas si los obligas a serlo.<\/p>\n<p>He estado conversando con Gemini y con el creador del software de traducci\u00f3n sobre qu\u00e9 modelos usar. El desarrollador me recomendaba Gema para lenguas europeas, pero Gemini insiste en que QWEN es superior por su precisi\u00f3n y su capacidad para seguir el prompt a rajatabla. Por eso prob\u00e9 las versiones sin censura, que est\u00e1n menos \u00abcontaminadas\u00bb por el aprendizaje de refuerzo. Siguiendo esta l\u00ednea, me he bajado el modelo Gema 4 de 31 mil millones de par\u00e1metros con cuantificaci\u00f3n de 6 bits (Q6K).<\/p>\n<p>Aqu\u00ed una nota sobre hardware: creo que con 64 GB de RAM se pueden hacer cosas muy serias si dedicas el equipo en exclusiva a la IA. Con 96 GB vas sobrado, no hacen falta 128 GB. Mi equipo, con un modelo de 35B cargado, ha estado usando entre 70 y 80 GB de RAM. La regla de rendimiento es sencilla y aproximada: si reduces los bits a la mitad (de 8 a 4), duplicas la velocidad (tokens\/segundo). Si duplicas los par\u00e1metros (de 15B a 30B), reduces la velocidad a la mitad. Es un juego de equilibrios constante.<\/p>\n<h2>Mi plan maestro para una traducci\u00f3n (casi) perfecta<\/h2>\n<p>Hablar con Gemini me ha dado una idea brillante para mi propio script de traducci\u00f3n, un proceso en varios pasos para mejorar dr\u00e1sticamente la coherencia. El primer paso ser\u00eda preguntarle al LLM sus capacidades, como el n\u00famero m\u00e1ximo de tokens que admite. Luego, en lugar de traducir directamente, le pasar\u00eda el libro por trozos para que genere un glosario: una lista de personajes con su g\u00e9nero, nombres propios, naves, veh\u00edculos, etc.<\/p>\n<p>Una vez generado este glosario por partes, se lo volver\u00eda a pasar al LLM para que lo unifique en un \u00fanico documento de referencia. Y aqu\u00ed viene la magia: empezar\u00eda la traducci\u00f3n, pero con una optimizaci\u00f3n clave. Antes de enviar cada bloque de texto a traducir, un script analizar\u00eda qu\u00e9 nombres del glosario aparecen en ese bloque espec\u00edfico y adjuntar\u00eda solo esa peque\u00f1a porci\u00f3n relevante del \u00edndice al prompt. Esto, quiz\u00e1s en formato JSON, ser\u00eda mucho m\u00e1s eficiente y permitir\u00eda traducir bloques de texto m\u00e1s grandes manteniendo un contexto perfecto.<\/p>\n<h2>Cr\u00edtica literaria improvisada: los agujeros de guion en la ciencia ficci\u00f3n<\/h2>\n<p>Por cierto, leer tanto me ha vuelto m\u00e1s cr\u00edtico. El \u00faltimo cuento de <em>Asimov&#8217;s<\/em> que traduje, aunque bonito, ten\u00eda unos errores de l\u00f3gica garrafales. La trama va de una adolescente que sobrevive a una cat\u00e1strofe y una ola de calor. A los tres meses del desastre, el guion dice que las latas de comida est\u00e1n rancias y los zumos embotellados estropeados. \u00a1Vamos a ver! Una lata de conserva te dura a\u00f1os, y yo me he comido yogures caducados de tres meses y aqu\u00ed sigo.<\/p>\n<p>Pero lo m\u00e1s incre\u00edble es que la protagonista entierra a una persona en una sola tarde. Cualquiera que haya cavado un simple agujero en tierra blanda, como yo (aunque no para enterrar a nadie, claro), sabe que es un trabajo agotador. Para cavar un metro de profundidad sin que las paredes se derrumben, necesitas despejar un \u00e1rea de tres metros a la redonda. Son esos peque\u00f1os detalles los que a veces te sacan de una historia, por muy buena que sea.<\/p>\n<h2>El enfoque del desarrollador: pensar antes de programar<\/h2>\n<p>Todo este proceso me ha hecho pensar mucho en c\u00f3mo construir\u00eda mi propia herramienta. Yo no soy un \u00abcoder\u00bb que tira l\u00edneas de c\u00f3digo sin m\u00e1s; soy un \u00abdeveloper\u00bb. Pienso en la arquitectura antes de empezar. Por ejemplo, para mi panel de control, crear\u00eda un componente visual reutilizable para todas las opciones de IA: selector de modelo online\/offline, gesti\u00f3n de claves, proveedores, etc.<\/p>\n<p>Adem\u00e1s, toda la configuraci\u00f3n debe ser externa, no estar \u00abhardcodeada\u00bb. Estoy barajando opciones para guardarla: un fichero .ini, un .plist de macOS, XML, JSON&#8230; La idea es tener una clase padre que gestione un objeto de configuraci\u00f3n, encarg\u00e1ndose de cargarlo y guardarlo de forma limpia y ordenada. Es este tipo de planificaci\u00f3n lo que diferencia un proyecto robusto de un apa\u00f1o r\u00e1pido.<\/p>\n<p>En fin, ya van 21 minutos de reflexi\u00f3n. Como siempre os digo, no olvid\u00e9is habitualizaros, sospechosos, \u00a1y que no os la pique un pollo belga! A demonio demon\u00edaco.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cr\u00f3nica de mis experimentos traduciendo novelas con IA. Comparo modelos online y locales como QWEN y Gema, detallo costes y comparto un m\u00e9todo avanzado.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[112,113,114,111,110],"class_list":["post-208","post","type-post","status-publish","format-standard","hentry","category-podcastexto","tag-gemini-vs-qwen","tag-harry-turtledove","tag-lm-studio","tag-modelos-llm-locales","tag-traduccion-con-ia"],"_links":{"self":[{"href":"https:\/\/rfog.es\/index.php?rest_route=\/wp\/v2\/posts\/208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rfog.es\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rfog.es\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rfog.es\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/rfog.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=208"}],"version-history":[{"count":1,"href":"https:\/\/rfog.es\/index.php?rest_route=\/wp\/v2\/posts\/208\/revisions"}],"predecessor-version":[{"id":209,"href":"https:\/\/rfog.es\/index.php?rest_route=\/wp\/v2\/posts\/208\/revisions\/209"}],"wp:attachment":[{"href":"https:\/\/rfog.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rfog.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rfog.es\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}