Salta ai contenuti

Installazione

Assicurati di avere Python >= 3.8 installato, quindi da un terminale esegui:

Terminal window
pip install libretranslate
libretranslate [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:

Terminal window
libretranslate --load-only en,es,fr

Controlla l’elenco degli argomenti per ulteriori opzioni.

Per utilizzare il rilevatore di confini di frase più veloce (MiniSBD) usa:

Terminal window
ARGOS_CHUNK_TYPE=MINISBD libretranslate [...]

Puoi anche eseguire l’applicazione con docker. Per prima cosa clona il repository:

Terminal window
git clone https://github.com/LibreTranslate/LibreTranslate
cd LibreTranslate

Quindi 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:

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

È possibile passare gli argomenti dell’applicazione direttamente a Gunicorn tramite:

Terminal window
gunicorn --bind 0.0.0.0:5000 'wsgi:app(api_keys=True)'

Vedi articolo Medium di JM Robles e il k8s.yaml migliorato da @rasos.

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:

Terminal window
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
ArgomentoDescrizionePredefinito
--hostImposta l’host a cui associare il server127.0.0.1
--portImposta la porta a cui associare il server5000
--char-limitImposta il limite di caratteriNessun limite
--req-limitImposta il numero massimo di richieste al minuto per client (al di fuori dei limiti impostati dalle chiavi api)Nessun limite
--req-limit-storageURI di archiviazione da utilizzare per l’archiviazione dei dati sui limiti di richiesta. Vedi Flask Limitermemory://
--req-time-costConsidera 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-limitImposta il numero massimo di testi da tradurre in una richiesta batchNessun limite
--frontend-language-sourceImposta la lingua predefinita del frontend - sorgenteauto
--frontend-language-targetImposta la lingua predefinita del frontend - destinazionelocale
--frontend-titleImposta il titolo del frontendNessun titolo
--frontend-timeoutImposta il timeout della traduzione del frontend500
--api-keys-db-pathUtilizza un percorso specifico all’interno del contenitore per il database locale. Può essere assoluto o relativodb/api_keys.db
--api-keys-remoteUtilizza questo endpoint remoto per interrogare le chiavi API valide invece di utilizzare il database localeUsa db locale
--get-api-key-linkMostra un link nell’interfaccia utente per indirizzare gli utenti a ottenere una chiave APINessun link API visualizzato
--shared-storageURI di archiviazione condivisa da utilizzare per la condivisione di dati multi-processo (ad es. quando si utilizza gunicorn)memory://
--secondaryContrassegna questa istanza come istanza secondaria per evitare conflitti con il nodo primario in configurazioni multi-nodoPrimario
--load-onlyImposta le lingue disponibiliTutte
--threadsImposta il numero di thread4
--metrics-auth-tokenProteggi l’endpoint /metrics consentendo solo ai client che dispongono di un token di autorizzazione Bearer validoNessuna autenticazione
--url-prefixAggiungi un prefisso all’URL: example.com:5000/url-prefix//
--debugAbilita l’ambiente di debugDisabilitato
--sslAbilita SSLDisabilitato
--api-keysAbilita il database delle chiavi API per i limiti di velocità per client quando viene raggiunto —req-limitDisabilitato
--require-api-key-originRichiedi l’uso di una chiave API per l’accesso programmatico all’API, a meno che l’origine della richiesta non corrisponda a questo dominioDisabilitato
--require-api-key-secretRichiedi l’uso di una chiave API per l’accesso programmatico all’API, a meno che il client non invii anche un segreto corrispondenteDisabilitato
--require-api-key-fingerprintRichiedi l’uso di una chiave API per l’accesso programmatico all’API, a meno che il client non corrisponda anche a un’impronta digitaleDisabilitato
--under-attackAbilita la modalità sotto attacco. Quando abilitato, le richieste devono essere effettuate con una chiave APIDisabilitato
--suggestionsConsenti suggerimenti degli utentiDisabilitato
--disable-files-translationDisabilita la traduzione dei fileAbilitato
--disable-web-uiDisabilita l’interfaccia utente webAbilitato
--update-modelsAggiorna i modelli linguistici all’avvioDisabilitato
--metricsAbilita l’endpoint /metrics per l’esportazione delle metriche di utilizzo di PrometheusDisabilitato
--translation-cacheMemorizza 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.

Se hai installato con pip:

pip install -U libretranslate

Se stai usando docker:

docker pull libretranslate/libretranslate

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.

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:

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

È 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:

Terminal window
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)'