Files

158 lines
4.2 KiB
Markdown

# ComfyUI-HyMT2 — CLI tools
Two helpers for running Hy-MT2 through a remote ComfyUI server without
opening the UI.
| Script | Style | Purpose |
|---|---|---|
| `hymt2_cli.py` | v2.0 套路 A/B | One-shot translation. |
| `hymt2_batch.py` | v2.0 套路 C | JSON batch with resumable runs. |
Both default to `127.0.0.1:8188`; point them at your GPU server with
`--ip 10.8.0.12` (or `--server 10.8.0.12:8188`).
For best startup time we recommend calling the venv's python directly
(per v2.0 §2.4):
```bash
PY=/mnt/modelall/ComfyUI/.venv/bin/python
```
## 1. `hymt2_cli.py` — single shot
### Inline text
```bash
$PY hymt2_cli.py "今天天气真好,我们去散步吧。" \
--target English --prompt-lang en --ip 10.8.0.12
```
### Read from a file
```bash
$PY hymt2_cli.py /path/to/article.zh.md \
--target English --prompt-lang en --ip 10.8.0.12 \
--out /path/to/article.en.md
```
### Read from stdin
```bash
cat article.zh.md | $PY hymt2_cli.py - \
--target Japanese --prompt-lang en --ip 10.8.0.12
```
### With a glossary
```bash
cat > /tmp/glossary.txt <<'EOF'
# tech glossary
endpoint => endpoint
webhook => webhook
token => token
EOF
$PY hymt2_cli.py "调用 API 时,请在 endpoint 后附 token" \
--target English --prompt-lang en --ip 10.8.0.12 \
--terminology /tmp/glossary.txt
```
### With background context
```bash
$PY hymt2_cli.py "本判决系终审判决。" \
--target English --prompt-lang en --ip 10.8.0.12 \
--background "Closing paragraph of a Chinese administrative-litigation judgment."
```
### With a style descriptor
```bash
$PY hymt2_cli.py "Hi guys, this is a great product!" \
--target Chinese --prompt-lang zh --ip 10.8.0.12 \
--style "正式书面语"
```
### Useful flags
| Flag | Default | Notes |
|---|---|---|
| `--target` | `English` | Full language name. EN names with `--prompt-lang en`, ZH names with `--prompt-lang zh`. |
| `--prompt-lang` | `en` | Selects the EN or ZH prompt template. |
| `--model-path` | `tencent/Hy-MT2-1.8B` | Use `tencent/Hy-MT2-7B` for the 7B model. |
| `--gpu` | `0` | Maps to `cuda:N`. |
| `--temperature / --top-p / --top-k / --repetition-penalty / --max-new-tokens` | model-card defaults | Override the sampling params. |
| `--seed` | `-1` | Set a value for reproducible runs. |
| `--dump-workflow PATH` | — | Write the API workflow JSON for UI loading. |
| `--ws-recv-timeout` | `600` s | Cold-load tolerance for the WebSocket idle timeout (v2.0 §10). |
| `--force-reload` | off | Bypass the loader cache. |
## 2. `hymt2_batch.py` — batch translation
Input formats accepted (autodetected):
```jsonc
// (a) list of strings
[
"今天天气真好",
"明天去散步吧"
]
// (b) list of {id, text}
[
{ "id": "weather_1", "text": "今天天气真好" },
{ "id": "weather_2", "text": "明天去散步吧" }
]
// (c) dict of id → text
{
"weather_1": "今天天气真好",
"weather_2": "明天去散步吧"
}
```
Each item produces one output file `<out-dir>/<sanitized-id>.json` containing:
```json
{
"id": "weather_1",
"source": "今天天气真好",
"translation": "The weather is really nice today.",
"target_lang": "English",
"prompt_lang": "en",
"model_path": "tencent/Hy-MT2-1.8B"
}
```
### Resumable batch run
```bash
$PY hymt2_batch.py /mnt/modelall/in/ai_news_vocab.json \
--out-dir /mnt/modelall/out/hymt2_ai_news \
--target Japanese --prompt-lang en \
--ip 10.8.0.12 \
--limit 100 \
--dump-workflow /mnt/modelall/tmp/hymt2_first.json
```
Re-run the same command — already-finished files are skipped. Pass `--force`
to retranslate everything.
### Apply a glossary to every item
```bash
$PY hymt2_batch.py words.json \
--out-dir /mnt/modelall/out/hymt2_words \
--target English --prompt-lang en --ip 10.8.0.12 \
--terminology /mnt/modelall/in/glossary.txt
```
## Debugging tips
1. `--dump-workflow /tmp/wf.json` and load that into the ComfyUI UI — easiest
way to confirm the prompt was built the way you expected.
2. On the server: `tail -f /mnt/modelall/tmp/comfy.log` while the CLI runs
to see `[hymt2/translate]`, `[hymt2/gen]`, and VRAM diagnostic lines.
3. If the WebSocket disconnects on a cold first-load, bump `--ws-recv-timeout`
to `1200` or higher.