Skip to main content

fast-translate

Tradução offline rápida em CPU, 100% local e sem dependências externas:

  • en -> pt-BR
  • pt-BR -> en
from fast_translate import Translator

tr = Translator()
print(tr.translate("How are you today?"))               # -> "Como você está hoje?"
print(tr.translate("Como você está hoje?", "pt-en"))    # -> "How are you today?"
tr.close()

O que mudou na 0.2.0

A versão 0.2.0 substitui o translateLocally por um motor de tradução próprio, escrito em Rust e embutido no pacote. O comportamento e a API são os mesmos; o que muda é o que roda por baixo.

  • Self-contained de verdade. Não há mais binário externo, subprocesso, Native Messaging, dependência de Qt, nem download de nada em tempo de execução. Os modelos en-pt e pt-en já vêm dentro do pacote. pip install e pronto.
  • Muito mais rápido em escala. ~5,9× mais vazão com múltiplas threads e cauda de latência (p95) ~5× menor — não há mais o custo e a instabilidade do subprocesso.
  • Memória estável e compartilhada. O modelo é carregado uma vez e compartilhado entre todas as threads. Sem cópia por thread e sem crescimento ao longo do tempo (o problema de RAM que crescia com o translateLocally acabou).
  • Thread-safe. A tradução libera o GIL, então basta compartilhar uma instância de Translator entre threads para escalar entre os núcleos da CPU.
  • Mesma qualidade. Em frases reais a saída é idêntica à do translateLocally.
  • Sem novas dependências Python. O pacote não requer mais httpx/zstandard.

Instalação

pip install fast-translate

Wheels pré-compiladas são publicadas para Linux, macOS e Windows — não é preciso ter Rust instalado para usar. (Para compilar do código-fonte é necessário o toolchain Rust e um compilador C.)

Uso

from fast_translate import Translator

tr = Translator()
tr.translate("The children were playing happily in the garden.")   # en -> pt-BR
tr.translate("As crianças estavam brincando no jardim.", "pt-en")  # pt-BR -> en
tr.close()

Alta vazão — compartilhe uma instância entre threads:

import concurrent.futures as cf

tr = Translator(cache_size=1024)
with cf.ThreadPoolExecutor(max_workers=8) as ex:
    results = list(ex.map(tr.translate, sentences))
tr.close()

Translator também funciona como context manager (with Translator() as tr: ...).

Conteúdo técnico (código e LaTeX)

Trechos de código e fórmulas são preservados; só o texto natural ao redor é traduzido:

  • código: ```...```, ~~~...~~~, inline `...`
  • LaTeX: $$...$$, \(...\), \[...\] e ambientes (equation, align, ...)

Desempenho

AMD Ryzen 7 3700X (8 núcleos), frases reais, sem cache. Antigo = translateLocally via subprocesso (um worker); Novo = motor Rust em processo:

Métrica Antigo Novo (0.2.0) Ganho
Vazão (8 threads) ~65 frases/s ~384 frases/s ~5,9×
Latência p95 ~83 ms ~16 ms ~5,2× menor
Latência p50 (1 thread) ~10 ms ~13 ms ~1,3× maior

O ganho está na vazão e na cauda de latência (eliminar o subprocesso/IPC). A latência mediana de uma chamada isolada é um pouco maior, porque o motor usa f32 portável em vez das kernels int8 do bergamot — em cargas com muitas frases, a vazão domina.

Memória

O modelo é carregado uma vez e compartilhado entre as threads; não cresce com o tempo.

Estado RAM (RSS)
Só en-pt carregado ~94 MB
Ambas as direções ~163 MB
Após 5000 traduções (1 thread) ~163 MB (estável, sem vazamento)
Pico com 8 threads ~175 MB (+~12 MB, não por thread)

Para RAM mínima: carregue só a direção que usa (o carregamento é preguiçoso, na primeira chamada) e compartilhe uma única instância de Translator entre as threads.

Variáveis de ambiente

  • FAST_TRANSLATE_CACHE_SIZE — tamanho do cache LRU (default 64)
  • FAST_TRANSLATE_CACHE_MAX_ENTRY_CHARS — tamanho máximo por item de cache (default 512)

Como funciona (resumo)

O motor reimplementa em Rust o modelo bergamot tiny11 (encoder transformer de 6 camadas + decoder SSRU de 2 camadas, com shortlist léxica e decodificação greedy), carregando os pesos int8 embutidos e a tokenização SentencePiece. Uma fina camada Python cuida do cache, do pós-processamento pt-BR e da preservação de código/LaTeX.

Metadata

Release files for fast-translate 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fast-translate 0.2.0
File Size Uploaded Provenance
fast_translate-0.2.0.tar.gz 33.8 MB Without provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for fast-translate 0.2.0
File Interpreter ABI Platform
fast_translate-0.2.0-cp38-abi3-win_amd64.whl CPython 3.8 abi3 Windows x86-64 Details
fast_translate-0.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 abi3 Linux glibc 2.17+ x86-64 Details
fast_translate-0.2.0-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.8 abi3 macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64, macOS 11.0+ ARM64 Details

Total release size: 141.2 MB

Release files / fast_translate-0.2.0.tar.gz

Download URL fast_translate-0.2.0.tar.gz
Size 33.8 MB
Tags Source
SHA-256 checksum
How to use checksums
c6371007cc44179a17c564b369959c2b88777695d5986d5fa70aef85d1d653dd
BLAKE2b-256 checksum
How to use checksums
43d61176bab36edc03632c942f717a7330fa556718ad521dc3c86f63b60d70a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / fast_translate-0.2.0-cp38-abi3-win_amd64.whl

Download URL fast_translate-0.2.0-cp38-abi3-win_amd64.whl
Size 35.2 MB
Tags CPython 3.8 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
dd4848ecf0d6f3ac1d9e69f5e2a9a3d8c32ea40ce4701e105043b57f71e0c286
BLAKE2b-256 checksum
How to use checksums
967d547bf9902aa78cab8f3ec57d4a299750d0d7816c1dbb2032d40d9a3f1e26
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / fast_translate-0.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL fast_translate-0.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 35.5 MB
Tags CPython 3.8 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
f140fe0a54d0f08e50b9f80624dba60b3956ae28d966cef22e1d9092af309ed3
BLAKE2b-256 checksum
How to use checksums
b48ab4ad77493d6330ac7c6e2fcdde3f69133e33fbd36aeed9245528fcf8de33
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / fast_translate-0.2.0-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL fast_translate-0.2.0-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 36.7 MB
Tags CPython 3.8 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
220e46d9ad1fc5b2184241667528c890aecf16269ef38a2821d2730dd0e6cb1e
BLAKE2b-256 checksum
How to use checksums
156eb84b41a2ea2537bfb4fa1305d0f5b1b14eb24f02870c0cd3978da4a17f16
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Security for fast-translate 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page