Installazione

Mettiti in funzione con LibreTranslate.

Con Python

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

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:

libretranslate --load-only en,es,fr

Controlla l’elenco degli argomenti per ulteriori opzioni.

Nota

In produzione si consiglia di eseguire LibreTranslate con Gunicorn o Docker (che è configurato con Gunicorn) per evitare perdite di memoria.

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

ARGOS_CHUNK_TYPE=MINISBD libretranslate [...]

Con Docker

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

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

Quindi su Linux/macOS esegui ./run.sh [args], su Windows esegui run.bat [args].

CUDA

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

Con WSGI e Gunicorn

pip install gunicorn
gunicorn --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

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

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 update
helm search repo libretranslate

helm install libretranslate libretranslate/libretranslate --namespace libretranslate --create-namespace

Argomenti

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
Consiglio

Per richiedere sempre l’uso di una chiave API, imposta --req-limit su 0 e aggiungi il flag --api-keys. Le richieste effettuate senza una chiave API appropriata verranno rifiutate.

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

Software

Se hai installato con pip:

pip install -U libretranslate

Se stai usando docker:

docker pull libretranslate/libretranslate

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

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:

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