fast-translate
Tradução offline rápida em CPU, 100% local e sem dependências externas:
en -> pt-BRpt-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-ptept-enjá vêm dentro do pacote.pip installe 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
translateLocallyacabou). - Thread-safe. A tradução libera o GIL, então basta compartilhar uma instância de
Translatorentre 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 (default64)FAST_TRANSLATE_CACHE_MAX_ENTRY_CHARS— tamanho máximo por item de cache (default512)
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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| fast_translate-0.2.0.tar.gz | 33.8 MB | Without provenance | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.