Aller au contenu

Installation

Assurez-vous d’avoir Python >= 3.8 installé, puis depuis un terminal exécutez :

Fenêtre de terminal
pip install libretranslate
libretranslate [args]

Ensuite, ouvrez un navigateur web vers http://localhost:5000

Par défaut, LibreTranslate installera le support pour toutes les langues disponibles. Pour ne charger que certaines langues et réduire le temps de démarrage, vous pouvez utiliser l’argument --load-only :

Fenêtre de terminal
libretranslate --load-only en,es,fr

Vérifiez la liste des arguments pour plus d’options.

Pour utiliser le détecteur de limites de phrases plus rapide (MiniSBD) utilisez :

Fenêtre de terminal
ARGOS_CHUNK_TYPE=MINISBD libretranslate [...]

Vous pouvez également exécuter l’application avec docker. Clonez d’abord le dépôt :

Fenêtre de terminal
git clone https://github.com/LibreTranslate/LibreTranslate
cd LibreTranslate

Ensuite sur Linux/macOS exécutez ./run.sh [args], sur Windows exécutez run.bat [args].

Vous pouvez utiliser l’accélération matérielle pour accélérer les traductions sur un système équipé d’un GPU avec CUDA 12.4.1 et nvidia-docker installés.

Exécutez cette version avec :

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

Vous pouvez passer des arguments d’application directement à Gunicorn via :

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

Voir l’article Medium de JM Robles et le k8s.yaml amélioré par @rasos.

Basé sur le travail de @rasos, vous pouvez maintenant installer LibreTranslate sur Kubernetes en utilisant Helm.

Un graphique Helm est maintenant disponible dans le dépôt helm-chart où vous pouvez trouver plus de détails.

Vous pouvez installer rapidement LibreTranslate sur Kubernetes en utilisant Helm avec la commande suivante :

Fenêtre 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
ArgumentDescriptionDéfaut
--hostDéfinir l’hôte auquel lier le serveur127.0.0.1
--portDéfinir le port auquel lier le serveur5000
--char-limitDéfinir la limite de caractèresNo limit
--req-limitDéfinir le nombre maximum de requêtes par minute par client (en dehors des limites définies par les clés API)No limit
--req-limit-storageURI de stockage à utiliser pour le stockage des données de limite de requête. Voir Flask Limitermemory://
--req-time-costConsidère un coût de temps (en secondes) pour les besoins de limitation des requêtes. Si une requête prend 10 secondes et que cette valeur est définie à 5, le coût de la requête est de 2.No cost
--batch-limitDéfinir le nombre maximum de textes à traduire dans une requête groupéeNo limit
--frontend-language-sourceDéfinir la langue par défaut du frontend - sourceauto
--frontend-language-targetDéfinir la langue par défaut du frontend - ciblelocale
--frontend-titleDéfinir le titre du frontendPas de titre
--frontend-timeoutDéfinir le délai d’expiration de la traduction du frontend500
--api-keys-db-pathUtiliser un chemin spécifique à l’intérieur du conteneur pour la base de données locale. Peut être absolu ou relatifdb/api_keys.db
--api-keys-remoteUtiliser ce endpoint distant pour interroger les clés API valides au lieu d’utiliser la base de données localeUse local db
--get-api-key-linkAfficher un lien dans l’interface utilisateur pour diriger les utilisateurs vers l’obtention d’une clé APINo API link displayed
--shared-storageURI de stockage partagé à utiliser pour le partage de données multi-processus (par ex. lors de l’utilisation de gunicorn)memory://
--secondaryMarquer cette instance comme une instance secondaire pour éviter les conflits avec le nœud primaire dans les configurations multi-nœudsPrimary
--load-onlyDéfinir les langues disponiblesAll
--threadsDéfinir le nombre de threads4
--metrics-auth-tokenProtéger le endpoint /metrics en autorisant uniquement les clients qui ont un jeton d’autorisation Bearer valideNo auth
--url-prefixAjouter un préfixe à l’URL : example.com:5000/url-prefix//
--debugActiver l’environnement de débogageDisabled
--sslActiver SSLDisabled
--api-keysActiver la base de données des clés API pour les limites de taux par client lorsque —req-limit est atteintDisabled
--require-api-key-originExiger l’utilisation d’une clé API pour l’accès programmatique à l’API, sauf si l’origine de la requête correspond à ce domaineDisabled
--require-api-key-secretExiger l’utilisation d’une clé API pour l’accès programmatique à l’API, sauf si le client envoie également une correspondance secrèteDisabled
--require-api-key-fingerprintExiger l’utilisation d’une clé API pour l’accès programmatique à l’API, sauf si le client correspond également à une empreinteDisabled
--under-attackActiver le mode sous attaque. Lorsqu’il est activé, les requêtes doivent être faites avec une clé APIDisabled
--suggestionsAutoriser les suggestions des utilisateursDisabled
--disable-files-translationDésactiver la traduction de fichiersEnabled
--disable-web-uiDésactiver l’interface webEnabled
--update-modelsMettre à jour les modèles de langue au démarrageDisabled
--metricsActiver le endpoint /metrics pour exporter les métriques d’utilisation PrometheusDisabled
--translation-cacheMettre en cache la sortie de traduction pour les utilisateurs avec une clé API particulière (ou ‘all’ pour mettre en cache toutes les traductions)Disabled

Chaque argument a une variable d’environnement équivalente qui peut être utilisée à la place. Les variables d’environnement surchargent les valeurs par défaut mais ont une priorité inférieure aux arguments de la ligne de commande et sont particulièrement utiles si elles sont utilisées avec Docker. Les noms des variables d’environnement sont en majuscule_snake_case du nom de l’argument de commande équivalent avec un préfixe LT. Par exemple --char-limit —> LT_CHAR_LIMIT.

Si vous avez installé avec pip :

pip install -U libretranslate

Si vous utilisez docker :

docker pull libretranslate/libretranslate

Démarrez le programme avec l’argument --update-models. Par exemple : libretranslate --update-models ou ./run.sh --update-models. Définir --update-models mettra à jour les modèles, que des mises à jour soient disponibles ou non.

Alternativement, vous pouvez également exécuter le script scripts/install_models.py.

LibreTranslate a des capacités d’exportateur Prometheus lorsque vous passez l’argument --metrics au démarrage (désactivé par défaut). Lorsque les métriques sont activées, un endpoint /metrics est monté sur l’instance :

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

Vous pouvez ensuite configurer prometheus.yml pour lire les métriques :

scrape_configs:
- job_name: "libretranslate"
# Needed only if you use --metrics-auth-token
#authorization:
#credentials: "mytoken"
static_configs:
- targets: ["localhost:5000"]

Pour sécuriser le endpoint /metrics, vous pouvez également utiliser --metrics-auth-token mytoken.

Si vous utilisez Gunicorn, assurez-vous de créer un répertoire pour stocker les métriques de données multiprocessus et définissez PROMETHEUS_MULTIPROC_DIR :

Fenêtre 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)'