Installazione
Con Python
Sezione intitolata “Con Python”Assicurati di avere Python >= 3.8 installato, quindi da un terminale esegui:
pip install libretranslatelibretranslate [args]Quindi apri un browser web su http://localhost:5000
Per impostazione predefinita, LibreTranslate installerà il supporto per tutte le lingue disponibili. Per caricare solo alcune lingue e ridurre i tempi di avvio, puoi utilizzare l’argomento --load-only:
libretranslate --load-only en,es,frControlla l’elenco degli argomenti per ulteriori opzioni.
Per utilizzare il rilevatore di confini di frase più veloce (MiniSBD) usa:
ARGOS_CHUNK_TYPE=MINISBD libretranslate [...]Con Docker
Sezione intitolata “Con Docker”Puoi anche eseguire l’applicazione con docker. Per prima cosa clona il repository:
git clone https://github.com/LibreTranslate/LibreTranslatecd LibreTranslateQuindi su Linux/macOS esegui ./run.sh [args], su Windows esegui run.bat [args].
È possibile utilizzare l’accelerazione hardware per velocizzare le traduzioni su un sistema dotato di GPU con CUDA 12.4.1 e nvidia-docker installato.
Esegui questa versione con:
docker compose -f docker-compose.cuda.yml up -d --buildCon WSGI e Gunicorn
Sezione intitolata “Con WSGI e Gunicorn”pip install gunicorngunicorn --bind 0.0.0.0:5000 'wsgi:app()'È possibile passare gli argomenti dell’applicazione direttamente a Gunicorn tramite:
gunicorn --bind 0.0.0.0:5000 'wsgi:app(api_keys=True)'Con Kubernetes
Sezione intitolata “Con Kubernetes”Vedi articolo Medium di JM Robles e il k8s.yaml migliorato da @rasos.
Grafico Helm
Sezione intitolata “Grafico Helm”Basato sul lavoro di @rasos, ora puoi installare LibreTranslate su Kubernetes usando Helm.
Un grafico Helm è ora disponibile nel repository helm-chart dove puoi trovare maggiori dettagli.
Puoi installare rapidamente LibreTranslate su Kubernetes usando Helm con il seguente comando:
helm repo add libretranslate https://libretranslate.github.io/helm-chart/helm repo updatehelm search repo libretranslate
helm install libretranslate libretranslate/libretranslate --namespace libretranslate --create-namespaceArgomenti
Sezione intitolata “Argomenti”| Argomento | Descrizione | Predefinito |
|---|---|---|
--host | Imposta l’host a cui associare il server | 127.0.0.1 |
--port | Imposta la porta a cui associare il server | 5000 |
--char-limit | Imposta il limite di caratteri | Nessun limite |
--req-limit | Imposta il numero massimo di richieste al minuto per client (al di fuori dei limiti impostati dalle chiavi api) | Nessun limite |
--req-limit-storage | URI di archiviazione da utilizzare per l’archiviazione dei dati sui limiti di richiesta. Vedi Flask Limiter | memory:// |
--req-time-cost | Considera un costo in tempo (in secondi) ai fini della limitazione delle richieste. Se una richiesta impiega 10 secondi e questo valore è impostato su 5, il costo della richiesta è 2. | Nessun costo |
--batch-limit | Imposta il numero massimo di testi da tradurre in una richiesta batch | Nessun limite |
--frontend-language-source | Imposta la lingua predefinita del frontend - sorgente | auto |
--frontend-language-target | Imposta la lingua predefinita del frontend - destinazione | locale |
--frontend-title | Imposta il titolo del frontend | Nessun titolo |
--frontend-timeout | Imposta il timeout della traduzione del frontend | 500 |
--api-keys-db-path | Utilizza un percorso specifico all’interno del contenitore per il database locale. Può essere assoluto o relativo | db/api_keys.db |
--api-keys-remote | Utilizza questo endpoint remoto per interrogare le chiavi API valide invece di utilizzare il database locale | Usa db locale |
--get-api-key-link | Mostra un link nell’interfaccia utente per indirizzare gli utenti a ottenere una chiave API | Nessun link API visualizzato |
--shared-storage | URI di archiviazione condivisa da utilizzare per la condivisione di dati multi-processo (ad es. quando si utilizza gunicorn) | memory:// |
--secondary | Contrassegna questa istanza come istanza secondaria per evitare conflitti con il nodo primario in configurazioni multi-nodo | Primario |
--load-only | Imposta le lingue disponibili | Tutte |
--threads | Imposta il numero di thread | 4 |
--metrics-auth-token | Proteggi l’endpoint /metrics consentendo solo ai client che dispongono di un token di autorizzazione Bearer valido | Nessuna autenticazione |
--url-prefix | Aggiungi un prefisso all’URL: example.com:5000/url-prefix/ | / |
--debug | Abilita l’ambiente di debug | Disabilitato |
--ssl | Abilita SSL | Disabilitato |
--api-keys | Abilita il database delle chiavi API per i limiti di velocità per client quando viene raggiunto —req-limit | Disabilitato |
--require-api-key-origin | Richiedi l’uso di una chiave API per l’accesso programmatico all’API, a meno che l’origine della richiesta non corrisponda a questo dominio | Disabilitato |
--require-api-key-secret | Richiedi l’uso di una chiave API per l’accesso programmatico all’API, a meno che il client non invii anche un segreto corrispondente | Disabilitato |
--require-api-key-fingerprint | Richiedi l’uso di una chiave API per l’accesso programmatico all’API, a meno che il client non corrisponda anche a un’impronta digitale | Disabilitato |
--under-attack | Abilita la modalità sotto attacco. Quando abilitato, le richieste devono essere effettuate con una chiave API | Disabilitato |
--suggestions | Consenti suggerimenti degli utenti | Disabilitato |
--disable-files-translation | Disabilita la traduzione dei file | Abilitato |
--disable-web-ui | Disabilita l’interfaccia utente web | Abilitato |
--update-models | Aggiorna i modelli linguistici all’avvio | Disabilitato |
--metrics | Abilita l’endpoint /metrics per l’esportazione delle metriche di utilizzo di Prometheus | Disabilitato |
--translation-cache | Memorizza nella cache l’output della traduzione per gli utenti con una particolare chiave API (o ‘all’ per memorizzare nella cache tutte le traduzioni) | Disabilitato |
Ogni argomento ha una variabile d’ambiente equivalente che può essere utilizzata al suo posto. Le variabili d’ambiente sovrascrivono i valori predefiniti ma hanno una priorità inferiore rispetto agli argomenti della riga di comando e sono particolarmente utili se utilizzate con Docker. I nomi delle variabili d’ambiente sono l’upper_snake_case del nome dell’argomento del comando equivalente con un prefisso LT. Ad es. --char-limit —> LT_CHAR_LIMIT.
Aggiornamento
Sezione intitolata “Aggiornamento”Software
Sezione intitolata “Software”Se hai installato con pip:
pip install -U libretranslate
Se stai usando docker:
docker pull libretranslate/libretranslate
Modelli Linguistici
Sezione intitolata “Modelli Linguistici”Avvia il programma con l’argomento --update-models. Ad esempio: libretranslate --update-models o ./run.sh --update-models. L’impostazione di --update-models aggiornerà i modelli indipendentemente dal fatto che siano disponibili o meno aggiornamenti.
In alternativa puoi anche eseguire lo script scripts/install_models.py.
Metriche Prometheus
Sezione intitolata “Metriche Prometheus”LibreTranslate ha funzionalità di esportatore Prometheus quando si passa l’argomento --metrics all’avvio (disabilitato per impostazione predefinita). Quando le metriche sono abilitate, un endpoint /metrics viene montato sull’istanza:
# HELP libretranslate_http_requests_in_flight Multiprocess metric# TYPE libretranslate_http_requests_in_flight gaugelibretranslate_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 summarylibretranslate_http_request_duration_seconds_count{api_key="",endpoint="/translate",request_ip="127.0.0.1",status="200"} 0.0libretranslate_http_request_duration_seconds_sum{api_key="",endpoint="/translate",request_ip="127.0.0.1",status="200"} 0.0È quindi possibile configurare prometheus.yml per leggere le metriche:
scrape_configs: - job_name: "libretranslate"
# Necessario solo se si utilizza --metrics-auth-token #authorization: #credentials: "mytoken"
static_configs: - targets: ["localhost:5000"]Per proteggere l’endpoint /metrics è possibile utilizzare anche --metrics-auth-token mytoken.
Se si utilizza Gunicorn, assicurarsi di creare una directory per l’archiviazione delle metriche dei dati multiprocesso e impostare PROMETHEUS_MULTIPROC_DIR:
mkdir -p /tmp/prometheus_datarm /tmp/prometheus_data/*export PROMETHEUS_MULTIPROC_DIR=/tmp/prometheus_datagunicorn -c scripts/gunicorn_conf.py --bind 0.0.0.0:5000 'wsgi:app(metrics=True)'