Saltearse al contenido

Instalación

Asegúrate de tener Python >= 3.8 instalado, luego desde una terminal ejecuta:

Ventana de terminal
pip install libretranslate
libretranslate [args]

Luego abre un navegador web en http://localhost:5000

Por defecto, LibreTranslate instalará el soporte para todos los idiomas disponibles. Para cargar solo algunos idiomas y reducir los tiempos de inicio, puedes usar el argumento --load-only:

Ventana de terminal
libretranslate --load-only en,es,fr

Consulta la lista de argumentos para más opciones.

Para usar el detector de límites de oración más rápido (MiniSBD) usa:

Ventana de terminal
ARGOS_CHUNK_TYPE=MINISBD libretranslate [...]

También puedes ejecutar la aplicación con docker. Primero clona el repositorio:

Ventana de terminal
git clone https://github.com/LibreTranslate/LibreTranslate
cd LibreTranslate

Luego en Linux/macOS ejecuta ./run.sh [args], en Windows ejecuta run.bat [args].

Es posible usar la aceleración de hardware para acelerar las traducciones en un equipo con GPU compatible con CUDA 12.4.1 y nvidia-docker instalado.

Ejecuta esta versión con:

Ventana de terminal
docker compose -f docker-compose.cuda.yml up -d --build
Ventana de terminal
pip install gunicorn
gunicorn --bind 0.0.0.0:5000 'wsgi:app()'

Puedes pasar los argumentos de la aplicación directamente a Gunicorn a través de:

Ventana de terminal
gunicorn --bind 0.0.0.0:5000 'wsgi:app(api_keys=True)'

Consulta el artículo de Medium de JM Robles y el k8s.yaml mejorado por @rasos.

Basado en el trabajo de @rasos, ahora puedes instalar LibreTranslate en Kubernetes usando Helm.

Un gráfico de Helm ahora está disponible en el repositorio helm-chart donde puedes encontrar más detalles.

Puedes instalar rápidamente LibreTranslate en Kubernetes usando Helm con el siguiente comando:

Ventana de terminal
helm repo add libretranslate https://libretranslate.github.io/helm-chart/
helm repo update
helm search repo libretranslate
helm install libretranslate libretranslate/libretranslate --namespace libretranslate --create-namespace
ArgumentoDescripciónPredeterminado
--hostEstablece el host al que se asociará el servidor127.0.0.1
--portEstablece el puerto al que se asociará el servidor5000
--char-limitEstablece el límite de caracteresSin límite
--req-limitEstablece el número máximo de solicitudes por minuto por cliente (fuera de los límites establecidos por las claves api)Sin límite
--req-limit-storageURI de almacenamiento para los datos de límite de solicitudes. Ver Flask Limitermemory://
--req-time-costConsidera un costo de tiempo (en segundos) para limitar las solicitudes. Si una solicitud tarda 10 segundos y este valor se establece en 5, el costo de la solicitud es 2.Sin costo
--batch-limitEstablece el número máximo de textos a traducir en una solicitud por lotesSin límite
--frontend-language-sourceEstablece el idioma predeterminado del frontend - origenauto
--frontend-language-targetEstablece el idioma predeterminado del frontend - destinolocale
--frontend-titleEstablece el título del frontendSin título
--frontend-timeoutEstablece el tiempo de espera de la traducción del frontend500
--api-keys-db-pathUsa una ruta específica dentro del contenedor para la base de datos local. Puede ser absoluta o relativadb/api_keys.db
--api-keys-remoteUsa este punto final remoto para consultar claves API válidas en lugar de usar la base de datos localUsa la BD local
--get-api-key-linkMuestra un enlace en la interfaz de usuario para dirigir a los usuarios a obtener una clave APINo se muestra enlace de API
--shared-storageURI de almacenamiento compartido para el intercambio de datos entre procesos (por ejemplo, al usar gunicorn)memory://
--secondaryMarca esta instancia como secundaria para evitar conflictos con el nodo primario en configuraciones de varios nodosPrimario
--load-onlyEstablece los idiomas disponiblesTodos
--threadsEstablece el número de hilos4
--metrics-auth-tokenProtege el punto final /metrics permitiendo solo clientes que tengan un token de autorización Bearer válidoSin autenticación
--url-prefixAgrega un prefijo a la URL: ejemplo.com:5000/prefijo-url//
--debugHabilita el entorno de depuraciónDeshabilitado
--sslHabilita SSLDeshabilitado
--api-keysHabilita la base de datos de claves API para límites de tasa por cliente cuando se alcanza —req-limitDeshabilitado
--require-api-key-originRequiere el uso de una clave API para el acceso programático a la API, a menos que el origen de la solicitud coincida con este dominioDeshabilitado
--require-api-key-secretRequiere el uso de una clave API para el acceso programático a la API, a menos que el cliente también envíe un secreto coincidenteDeshabilitado
--require-api-key-fingerprintRequiere el uso de una clave API para el acceso programático a la API, a menos que el cliente también coincida con una huella digitalDeshabilitado
--under-attackHabilita el modo bajo ataque. Cuando está habilitado, las solicitudes deben realizarse con una clave APIDeshabilitado
--suggestionsPermite sugerencias de los usuariosDeshabilitado
--disable-files-translationDeshabilita la traducción de archivosHabilitado
--disable-web-uiDeshabilita la interfaz de usuario webHabilitado
--update-modelsActualiza los modelos de lenguaje al inicioDeshabilitado
--metricsHabilita el punto final /metrics para exportar métricas de uso de PrometheusDeshabilitado
--translation-cacheAlmacena en caché la salida de la traducción para usuarios con una clave API particular (o ‘all’ para almacenar en caché todas las traducciones)Deshabilitado

Cada argumento tiene una variable de entorno equivalente que se puede usar en su lugar. Las variables de entorno anulan los valores predeterminados pero tienen una prioridad más baja que los argumentos de la línea de comandos y son particularmente útiles si se usan con Docker. Los nombres de las variables de entorno son el upper_snake_case del nombre del argumento de comando equivalente con un prefijo LT. Por ejemplo, --char-limit —> LT_CHAR_LIMIT.

Si instalaste con pip:

pip install -U libretranslate

Si estás usando docker:

docker pull libretranslate/libretranslate

Inicia el programa con el argumento --update-models. Por ejemplo: libretranslate --update-models o ./run.sh --update-models. Establecer --update-models actualizará los modelos independientemente de si hay actualizaciones disponibles o no.

Alternativamente, también puedes ejecutar el script scripts/install_models.py.

LibreTranslate tiene capacidades de exportador de Prometheus cuando pasas el argumento --metrics al inicio (deshabilitado por defecto). Cuando las métricas están habilitadas, se monta un punto final /metrics en la instancia:

http://localhost:5000/metrics

# HELP libretranslate_http_requests_in_flight Multiprocess metric
# TYPE libretranslate_http_requests_in_flight gauge
libretranslate_http_requests_in_flight{api_key="",endpoint="/translate",request_ip="127.0.0.1"} 0.0
# HELP libretranslate_http_request_duration_seconds Multiprocess metric
# TYPE libretranslate_http_request_duration_seconds summary
libretranslate_http_request_duration_seconds_count{api_key="",endpoint="/translate",request_ip="127.0.0.1",status="200"} 0.0
libretranslate_http_request_duration_seconds_sum{api_key="",endpoint="/translate",request_ip="127.0.0.1",status="200"} 0.0

Luego puedes configurar prometheus.yml para leer las métricas:

scrape_configs:
- job_name: "libretranslate"
# Necesario solo si usas --metrics-auth-token
#authorization:
#credentials: "mytoken"
static_configs:
- targets: ["localhost:5000"]

Para proteger el punto final /metrics también puedes usar --metrics-auth-token mytoken.

Si usas Gunicorn, asegúrate de crear un directorio para almacenar los datos de métricas multiproceso y establecer PROMETHEUS_MULTIPROC_DIR:

Ventana de terminal
mkdir -p /tmp/prometheus_data
rm /tmp/prometheus_data/*
export PROMETHEUS_MULTIPROC_DIR=/tmp/prometheus_data
gunicorn -c scripts/gunicorn_conf.py --bind 0.0.0.0:5000 'wsgi:app(metrics=True)'