ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΌΠ°ΡΠΈΠ½Π΅Π½ ΠΏΡΠ΅Π²ΠΎΠ΄ OpenNMT-tf 2.30.0 (Open Neural Machine Translation), ΠΊΠΎΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π½Π° ΠΌΠ°ΡΠΈΠ½Π½ΠΎΡΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅. ΠΠΎΠ΄ΡΡ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½ΠΈ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° OpenNMT-tf, Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Python, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° TensorFlow ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ MIT Π»ΠΈΡΠ΅Π½Π·.
Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° OpenNMT Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° PyTorch, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π° ΠΏΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, OpenNMT Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° PyTorch ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Ρ ΠΊΠ°ΡΠΎ ΠΏΠΎ-Π»Π΅ΡΠ΅Π½ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΈ ΠΌΡΠ»ΡΠΈΠΌΠΎΠ΄Π°Π»Π΅Π½, Π΄ΠΎΠΊΠ°ΡΠΎ Π²Π°ΡΠΈΠ°Π½ΡΡΡ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° TensorFlow ΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π²Π° Ρ ΠΌΠΎΠ΄ΡΠ»Π½ΠΎΡΡ, ΡΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡ ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° GPU Π·Π° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π½Π΅Π²ΡΠΎΠ½Π½Π°ΡΠ° ΠΌΡΠ΅ΠΆΠ°. ΠΠ° ΠΎΠΏΡΠΎΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΡΡΡΠΎ ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΡΠ°Π½ΡΡΠ΅ΡΠ° Π½Π° C++ β CTranslate2, ΠΊΠΎΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±Π΅Π· Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ.
ΠΠΎΠ΄Π΅Π»ΠΈΡΠ΅ ΡΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π·Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈ, Π½Π΅ΠΌΡΠΊΠΈ ΠΈ ΠΊΠ°ΡΠ°Π»Π°Π½ΡΠΊΠΈ Π΅Π·ΠΈΡΠΈ. ΠΠ° ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ Π΅Π·ΠΈΡΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΌΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΌΠΎΠ΄Π΅Π» Π½Π° Π±Π°Π·Π° Π½Π°Π±ΠΎΡΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° OPUS (Π·Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ΅ ΠΏΠΎΠ΄Π°Π²Π°Ρ Π΄Π²Π° ΡΠ°ΠΉΠ»Π° β Π΅Π΄ΠΈΠ½ Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ Π΅Π·ΠΈΠΊ ΠΈ Π²ΡΠΎΡΠΈ Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½ΠΈ ΠΏΡΠ΅Π²ΠΎΠ΄ΠΈ Π½Π° ΡΠ΅Π·ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠ΅Π»Π΅Π²ΠΈΡ Π΅Π·ΠΈΠΊ).
ΠΡΠΎΠ΅ΠΊΡΡΡ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° Ρ ΡΡΠ°ΡΡΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° SYSTRAN, ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π² ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΌΠ°ΡΠΈΠ½Π΅Π½ ΠΏΡΠ΅Π²ΠΎΠ΄, ΠΈ Π³ΡΡΠΏΠ° ΠΈΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΎΡ Harvard, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° ΡΠΎΠ²Π΅ΡΠΊΠΈΡ Π΅Π·ΠΈΠΊ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΌΠ°ΡΠΈΠ½Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅. ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ ΠΎΠΏΡΠΎΡΡΠ΅Π½ ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΠ°ΠΌΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° Π²Ρ ΠΎΠ΄Π΅Π½ ΡΠ°ΠΉΠ» Ρ ΡΠ΅ΠΊΡΡ ΠΈ ΡΠ°ΠΉΠ» Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΠΏΡΠ΅Π²ΠΎΠ΄Π°. Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΎΡ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° OpenNMT, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π°Π²ΡΠΎΡΠΈΡΠΈΡΠ°Π½Π΅, ΠΊΠ»Π°ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΡΠ΅ΠΊΡΡΠΎΠ²Π΅ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ±ΡΠΈΡΡΠΈ.
Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ:
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° TensorFlow 2.11, Π½ΠΎ Π½ΠΎΠ²ΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠΈ Keras Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ (ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ΅ΠΆΠΈΠΌΠ° tf.keras.optimizers.legacy).
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Π΄Π²ΠΈΠΆΠΊΠ° CTranslate2 3.x, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π·Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° βΡΡΠ°Π½ΡΡΠΎΡΠΌΠ΅Ρβ.
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ pad_to_bucket_boundary Π·Π° Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π·Π°ΠΏΡΠ»Π²Π°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ·ΡΠ°Π²Π½ΡΠ²Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° Π±Π»ΠΎΠΊΠ° Π΄ΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, ΠΊΡΠ°ΡΠ½ΠΈ Π½Π° length_bucket_width.
- ΠΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΠΌΠ΅ΡΡΠΈΠΊΠΈ chrf ΠΈ chrf++ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° SacreBLEU, ΠΊΠΎΠΈΡΠΎ ΡΡΠ°Π²Π½ΡΠ²Π°Ρ ΠΌΠ°ΡΠΈΠ½Π½ΠΈΡ ΠΏΡΠ΅Π²ΠΎΠ΄ Ρ Π΅ΡΠ°Π»ΠΎΠ½Π½ΠΈΡ ΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠ΅Π²ΠΎΠ΄.
- ΠΡΠ΅ΠΌΠ°Ρ Π½Π°Ρ Π΅ Π°ΡΡΠΈΠ±ΡΡΡΡ Π½Π° ΠΌΠΎΠ΄Π΅Π»Π° ctranslate2_spec, ΠΊΠΎΠΉΡΠΎ Π²Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² CTranslate2.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
