From 5a72af3743d8b55fee204c641ca3a90e8556d20d Mon Sep 17 00:00:00 2001 From: Xixian Liao <50020827+xixianliao@users.noreply.github.com> Date: Thu, 14 Aug 2025 16:05:01 +0200 Subject: [PATCH 1/3] Added support for SalamandraTA 7B Instruct ACT --- app/constants.py | 2 +- app/utils/pipeline.py | 2 +- config.json | 116 +++++++++++++++++++++++++++++++++++++++++- 3 files changed, 116 insertions(+), 4 deletions(-) diff --git a/app/constants.py b/app/constants.py index 73cc0c7..131b812 100644 --- a/app/constants.py +++ b/app/constants.py @@ -10,4 +10,4 @@ SALAMANDRA_CHECKPOINT_IDS = ["salamandraTA-2B"] -SALAMANDRA_INSTRUCT_CHECKPOINT_IDS = ["salamandraTA-7b-instruct"] \ No newline at end of file +SALAMANDRA_INSTRUCT_CHECKPOINT_IDS = ["salamandraTA-7b-instruct", "salamandraTA-7b-instruct-ACT"] diff --git a/app/utils/pipeline.py b/app/utils/pipeline.py index 75d25b5..5f00b21 100644 --- a/app/utils/pipeline.py +++ b/app/utils/pipeline.py @@ -285,7 +285,7 @@ def load_model_translator( f'No checkpoint exists for base salamandra model: BSC-LT/{salamandra_checkpoint_id}. Skipping load.' ) raise ModelLoadingException - salamandra_checkpoint_id = 'BSC-LT/' + salamandra_checkpoint_id + salamandra_checkpoint_id = ('' if salamandra_checkpoint_id == "salamandraTA-7b-instruct-ACT" else 'BSC-LT/') + salamandra_checkpoint_id warn(f'Full model id: {salamandra_checkpoint_id}') translator = get_batch_salamandra_instruct_translator(salamandra_checkpoint_id, lang_map=model_config.get('lang_code_map')) diff --git a/config.json b/config.json index 6961131..511ef66 100644 --- a/config.json +++ b/config.json @@ -29,7 +29,8 @@ "ga": "Irish", "arn": "Aranese", "arg": "Aragonese", - "ast": "Asturian" + "ast": "Asturian", + "ru": "Russian" }, "models": [ { @@ -419,6 +420,117 @@ "hu": "Hungarian", "sk": "Slovak", "sl": "Slovenian", "et": "Estonian", "pl": "Polish", "lv": "Latvian", "sv": "Swedish", "mt": "Maltese", "ga": "Irish", "arn": "Aranese", "arg": "Aragonese", "ast": "Asturian" } + }, + { + "model_type": "salamandra_instruct", + "checkpoint_id": "salamandraTA-7b-instruct-ACT", + "hugging_face_repo_id": "LangTech-MT/salamandraTA-7b-instruct-ACT", + "model_path": "salamandraTA-7b-instruct-ACT", + "alt": "salamandra_instruct_act", + "multilingual": true, + "load": true, + "sentence_split": "nltk", + "supported_pairs": ["es-ca", "es-en", "es-fr", "es-de", "es-it", "es-pt", "es-eu", "es-gl", "es-bg", + "es-cz", "es-lt", "es-cr", "es-du", "es-ro", "es-da", "es-gr", "es-fi", "es-hu", + "es-sk", "es-sl", "es-et", "es-pl", "es-lv", "es-sv", "es-mt", "es-ga", "es-arn", + "es-arg", "es-ast", "ca-es", "ca-en", "ca-fr", "ca-de", "ca-it", "ca-pt", "ca-eu", + "ca-gl", "ca-bg", "ca-cz", "ca-lt", "ca-cr", "ca-du", "ca-ro", "ca-da", "ca-gr", + "ca-fi", "ca-hu", "ca-sk", "ca-sl", "ca-et", "ca-pl", "ca-lv", "ca-sv", "ca-mt", + "ca-ga", "ca-arn", "ca-arg", "ca-ast", "en-es", "en-ca", "en-fr", "en-de", "en-it", + "en-pt", "en-eu", "en-gl", "en-bg", "en-cz", "en-lt", "en-cr", "en-du", "en-ro", + "en-da", "en-gr", "en-fi", "en-hu", "en-sk", "en-sl", "en-et", "en-pl", "en-lv", + "en-sv", "en-mt", "en-ga", "en-arn", "en-arg", "en-ast", "fr-es", "fr-ca", "fr-en", + "fr-de", "fr-it", "fr-pt", "fr-eu", "fr-gl", "fr-bg", "fr-cz", "fr-lt", "fr-cr", + "fr-du", "fr-ro", "fr-da", "fr-gr", "fr-fi", "fr-hu", "fr-sk", "fr-sl", "fr-et", "fr-pl", + "fr-lv", "fr-sv", "fr-mt", "fr-ga", "fr-arn", "fr-arg", "fr-ast", "de-es", "de-ca", "de-en", + "de-fr", "de-it", "de-pt", "de-eu", "de-gl", "de-bg", "de-cz", "de-lt", "de-cr", "de-du", + "de-ro", "de-da", "de-gr", "de-fi", "de-hu", "de-sk", "de-sl", "de-et", "de-pl", "de-lv", + "de-sv", "de-mt", "de-ga", "de-arn", "de-arg", "de-ast", "it-es", "it-ca", "it-en", "it-fr", + "it-de", "it-pt", "it-eu", "it-gl", "it-bg", "it-cz", "it-lt", "it-cr", "it-du", "it-ro", + "it-da", "it-gr", "it-fi", "it-hu", "it-sk", "it-sl", "it-et", "it-pl", "it-lv", "it-sv", + "it-mt", "it-ga", "it-arn", "it-arg", "it-ast", "pt-es", "pt-ca", "pt-en", "pt-fr", "pt-de", + "pt-it", "pt-eu", "pt-gl", "pt-bg", "pt-cz", "pt-lt", "pt-cr", "pt-du", "pt-ro", "pt-da", + "pt-gr", "pt-fi", "pt-hu", "pt-sk", "pt-sl", "pt-et", "pt-pl", "pt-lv", "pt-sv", "pt-mt", + "pt-ga", "pt-arn", "pt-arg", "pt-ast", "eu-es", "eu-ca", "eu-en", "eu-fr", "eu-de", "eu-it", + "eu-pt", "eu-gl", "eu-bg", "eu-cz", "eu-lt", "eu-cr", "eu-du", "eu-ro", "eu-da", "eu-gr", + "eu-fi", "eu-hu", "eu-sk", "eu-sl", "eu-et", "eu-pl", "eu-lv", "eu-sv", "eu-mt", "eu-ga", + "eu-arn", "eu-arg", "eu-ast", "gl-es", "gl-ca", "gl-en", "gl-fr", "gl-de", "gl-it", + "gl-pt", "gl-eu", "gl-bg", "gl-cz", "gl-lt", "gl-cr", "gl-du", "gl-ro", "gl-da", "gl-gr", + "gl-fi", "gl-hu", "gl-sk", "gl-sl", "gl-et", "gl-pl", "gl-lv", "gl-sv", "gl-mt", "gl-ga", + "gl-arn", "gl-arg", "gl-ast", "bg-es", "bg-ca", "bg-en", "bg-fr", "bg-de", "bg-it", "bg-pt", + "bg-eu", "bg-gl", "bg-cz", "bg-lt", "bg-cr", "bg-du", "bg-ro", "bg-da", "bg-gr", "bg-fi", + "bg-hu", "bg-sk", "bg-sl", "bg-et", "bg-pl", "bg-lv", "bg-sv", "bg-mt", "bg-ga", "bg-arn", + "bg-arg", "bg-ast", "cz-es", "cz-ca", "cz-en", "cz-fr", "cz-de", "cz-it", "cz-pt", "cz-eu", + "cz-gl", "cz-bg", "cz-lt", "cz-cr", "cz-du", "cz-ro", "cz-da", "cz-gr", "cz-fi", "cz-hu", + "cz-sk", "cz-sl", "cz-et", "cz-pl", "cz-lv", "cz-sv", "cz-mt", "cz-ga", "cz-arn", "cz-arg", + "cz-ast", "lt-es", "lt-ca", "lt-en", "lt-fr", "lt-de", "lt-it", "lt-pt", "lt-eu", "lt-gl", + "lt-bg", "lt-cz", "lt-cr", "lt-du", "lt-ro", "lt-da", "lt-gr", "lt-fi", "lt-hu", "lt-sk", + "lt-sl", "lt-et", "lt-pl", "lt-lv", "lt-sv", "lt-mt", "lt-ga", "lt-arn", "lt-arg", "lt-ast", + "cr-es", "cr-ca", "cr-en", "cr-fr", "cr-de", "cr-it", "cr-pt", "cr-eu", "cr-gl", "cr-bg", + "cr-cz", "cr-lt", "cr-du", "cr-ro", "cr-da", "cr-gr", "cr-fi", "cr-hu", "cr-sk", "cr-sl", + "cr-et", "cr-pl", "cr-lv", "cr-sv", "cr-mt", "cr-ga", "cr-arn", "cr-arg", "cr-ast", "du-es", + "du-ca", "du-en", "du-fr", "du-de", "du-it", "du-pt", "du-eu", "du-gl", "du-bg", "du-cz", + "du-lt", "du-cr", "du-ro", "du-da", "du-gr", "du-fi", "du-hu", "du-sk", "du-sl", "du-et", + "du-pl", "du-lv", "du-sv", "du-mt", "du-ga", "du-arn", "du-arg", "du-ast", "ro-es", "ro-ca", + "ro-en", "ro-fr", "ro-de", "ro-it", "ro-pt", "ro-eu", "ro-gl", "ro-bg", "ro-cz", "ro-lt", + "ro-cr", "ro-du", "ro-da", "ro-gr", "ro-fi", "ro-hu", "ro-sk", "ro-sl", "ro-et", "ro-pl", + "ro-lv", "ro-sv", "ro-mt", "ro-ga", "ro-arn", "ro-arg", "ro-ast", "da-es", "da-ca", "da-en", + "da-fr", "da-de", "da-it", "da-pt", "da-eu", "da-gl", "da-bg", "da-cz", "da-lt", "da-cr", + "da-du", "da-ro", "da-gr", "da-fi", "da-hu", "da-sk", "da-sl", "da-et", "da-pl", "da-lv", + "da-sv", "da-mt", "da-ga", "da-arn", "da-arg", "da-ast", "gr-es", "gr-ca", "gr-en", "gr-fr", + "gr-de", "gr-it", "gr-pt", "gr-eu", "gr-gl", "gr-bg", "gr-cz", "gr-lt", "gr-cr", "gr-du", + "gr-ro", "gr-da", "gr-fi", "gr-hu", "gr-sk", "gr-sl", "gr-et", "gr-pl", "gr-lv", "gr-sv", + "gr-mt", "gr-ga", "gr-arn", "gr-arg", "gr-ast", "fi-es", "fi-ca", "fi-en", "fi-fr", "fi-de", + "fi-it", "fi-pt", "fi-eu", "fi-gl", "fi-bg", "fi-cz", "fi-lt", "fi-cr", "fi-du", "fi-ro", + "fi-da", "fi-gr", "fi-hu", "fi-sk", "fi-sl", "fi-et", "fi-pl", "fi-lv", "fi-sv", "fi-mt", + "fi-ga", "fi-arn", "fi-arg", "fi-ast", "hu-es", "hu-ca", "hu-en", "hu-fr", "hu-de", "hu-it", + "hu-pt", "hu-eu", "hu-gl", "hu-bg", "hu-cz", "hu-lt", "hu-cr", "hu-du", "hu-ro", "hu-da", + "hu-gr", "hu-fi", "hu-sk", "hu-sl", "hu-et", "hu-pl", "hu-lv", "hu-sv", "hu-mt", "hu-ga", + "hu-arn", "hu-arg", "hu-ast", "sk-es", "sk-ca", "sk-en", "sk-fr", "sk-de", "sk-it", "sk-pt", + "sk-eu", "sk-gl", "sk-bg", "sk-cz", "sk-lt", "sk-cr", "sk-du", "sk-ro", "sk-da", "sk-gr", + "sk-fi", "sk-hu", "sk-sl", "sk-et", "sk-pl", "sk-lv", "sk-sv", "sk-mt", "sk-ga", "sk-arn", + "sk-arg", "sk-ast", "sl-es", "sl-ca", "sl-en", "sl-fr", "sl-de", "sl-it", "sl-pt", "sl-eu", + "sl-gl", "sl-bg", "sl-cz", "sl-lt", "sl-cr", "sl-du", "sl-ro", "sl-da", "sl-gr", "sl-fi", + "sl-hu", "sl-sk", "sl-et", "sl-pl", "sl-lv", "sl-sv", "sl-mt", "sl-ga", "sl-arn", "sl-arg", + "sl-ast", "et-es", "et-ca", "et-en", "et-fr", "et-de", "et-it", "et-pt", "et-eu", "et-gl", + "et-bg", "et-cz", "et-lt", "et-cr", "et-du", "et-ro", "et-da", "et-gr", "et-fi", "et-hu", + "et-sk", "et-sl", "et-pl", "et-lv", "et-sv", "et-mt", "et-ga", "et-arn", "et-arg", "et-ast", + "pl-es", "pl-ca", "pl-en", "pl-fr", "pl-de", "pl-it", "pl-pt", "pl-eu", "pl-gl", "pl-bg", + "pl-cz", "pl-lt", "pl-cr", "pl-du", "pl-ro", "pl-da", "pl-gr", "pl-fi", "pl-hu", "pl-sk", + "pl-sl", "pl-et", "pl-lv", "pl-sv", "pl-mt", "pl-ga", "pl-arn", "pl-arg", "pl-ast", "lv-es", + "lv-ca", "lv-en", "lv-fr", "lv-de", "lv-it", "lv-pt", "lv-eu", "lv-gl", "lv-bg", "lv-cz", + "lv-lt", "lv-cr", "lv-du", "lv-ro", "lv-da", "lv-gr", "lv-fi", "lv-hu", "lv-sk", "lv-sl", + "lv-et", "lv-pl", "lv-sv", "lv-mt", "lv-ga", "lv-arn", "lv-arg", "lv-ast", "sv-es", "sv-ca", + "sv-en", "sv-fr", "sv-de", "sv-it", "sv-pt", "sv-eu", "sv-gl", "sv-bg", "sv-cz", "sv-lt", + "sv-cr", "sv-du", "sv-ro", "sv-da", "sv-gr", "sv-fi", "sv-hu", "sv-sk", "sv-sl", "sv-et", + "sv-pl", "sv-lv", "sv-mt", "sv-ga", "sv-arn", "sv-arg", "sv-ast", "mt-es", "mt-ca", "mt-en", + "mt-fr", "mt-de", "mt-it", "mt-pt", "mt-eu", "mt-gl", "mt-bg", "mt-cz", "mt-lt", "mt-cr", + "mt-du", "mt-ro", "mt-da", "mt-gr", "mt-fi", "mt-hu", "mt-sk", "mt-sl", "mt-et", "mt-pl", + "mt-lv", "mt-sv", "mt-ga", "mt-arn", "mt-arg", "mt-ast", "ga-es", "ga-ca", "ga-en", "ga-fr", + "ga-de", "ga-it", "ga-pt", "ga-eu", "ga-gl", "ga-bg", "ga-cz", "ga-lt", "ga-cr", "ga-du", + "ga-ro", "ga-da", "ga-gr", "ga-fi", "ga-hu", "ga-sk", "ga-sl", "ga-et", "ga-pl", "ga-lv", + "ga-sv", "ga-mt", "ga-arn", "ga-arg", "ga-ast", "arn-es", "arn-ca", "arn-en", "arn-fr", + "arn-de", "arn-it", "arn-pt", "arn-eu", "arn-gl", "arn-bg", "arn-cz", "arn-lt", "arn-cr", + "arn-du", "arn-ro", "arn-da", "arn-gr", "arn-fi", "arn-hu", "arn-sk", "arn-sl", "arn-et", + "arn-pl", "arn-lv", "arn-sv", "arn-mt", "arn-ga", "arn-arg", "arn-ast", "arg-es", "arg-ca", + "arg-en", "arg-fr", "arg-de", "arg-it", "arg-pt", "arg-eu", "arg-gl", "arg-bg", "arg-cz", + "arg-lt", "arg-cr", "arg-du", "arg-ro", "arg-da", "arg-gr", "arg-fi", "arg-hu", "arg-sk", + "arg-sl", "arg-et", "arg-pl", "arg-lv", "arg-sv", "arg-mt", "arg-ga", "arg-arn", "arg-ast", + "ast-es", "ast-ca", "ast-en", "ast-fr", "ast-de", "ast-it", "ast-pt", "ast-eu", "ast-gl", + "ast-bg", "ast-cz", "ast-lt", "ast-cr", "ast-du", "ast-ro", "ast-da", "ast-gr", "ast-fi", + "ast-hu", "ast-sk", "ast-sl", "ast-et", "ast-pl", "ast-lv", "ast-sv", "ast-mt", "ast-ga", + "ast-arn", "ast-arg", "ca-ru", "ru-ca"], + "pipeline": { + "translate": true + }, + "lang_code_map": { + "es": "Spanish", "ca": "Catalan", "en": "English", "fr": "French", "de": "German", "it": "Italian", + "pt": "Portuguese", "eu": "Euskera", "gl": "Galician", "bg": "Bulgarian", "cz": "Czech", "lt": "Lithuanian", + "cr": "Croatian", "du": "Dutch", "ro": "Romanian", "da": "Danish", "gr": "Greek", "fi": "Finnish", + "hu": "Hungarian", "sk": "Slovak", "sl": "Slovenian", "et": "Estonian", "pl": "Polish", "lv": "Latvian", + "sv": "Swedish", "mt": "Maltese", "ga": "Irish", "arn": "Aranese", "arg": "Aragonese", "ast": "Asturian", + "ru": "Russian" + } } ] -} \ No newline at end of file +} From 31b21057d69cf4165a1c35d30030193e1daaa0af Mon Sep 17 00:00:00 2001 From: Xixian Liao <50020827+xixianliao@users.noreply.github.com> Date: Wed, 20 Aug 2025 11:42:48 +0200 Subject: [PATCH 2/3] Added support for SalamandraTA 7B Instruct ACT --- app/tests/api/v1/test_api_translate.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/tests/api/v1/test_api_translate.py b/app/tests/api/v1/test_api_translate.py index b7591ec..6587a11 100644 --- a/app/tests/api/v1/test_api_translate.py +++ b/app/tests/api/v1/test_api_translate.py @@ -48,7 +48,8 @@ def test_list_languages(self): "ga": "Irish", "arn": "Aranese", "arg": "Aragonese", - "ast": "Asturian" + "ast": "Asturian", + "ru": "Russian" } def test_translate_text_valid_code(self): From 757d66513c975d3e55f485f45f30e494c574ec5e Mon Sep 17 00:00:00 2001 From: Xixian Liao <50020827+xixianliao@users.noreply.github.com> Date: Wed, 20 Aug 2025 14:48:58 +0200 Subject: [PATCH 3/3] Added support for SalamandraTA 7B Instruct ACT --- app/utils/pipeline.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/utils/pipeline.py b/app/utils/pipeline.py index 5f00b21..75d25b5 100644 --- a/app/utils/pipeline.py +++ b/app/utils/pipeline.py @@ -285,7 +285,7 @@ def load_model_translator( f'No checkpoint exists for base salamandra model: BSC-LT/{salamandra_checkpoint_id}. Skipping load.' ) raise ModelLoadingException - salamandra_checkpoint_id = ('' if salamandra_checkpoint_id == "salamandraTA-7b-instruct-ACT" else 'BSC-LT/') + salamandra_checkpoint_id + salamandra_checkpoint_id = 'BSC-LT/' + salamandra_checkpoint_id warn(f'Full model id: {salamandra_checkpoint_id}') translator = get_batch_salamandra_instruct_translator(salamandra_checkpoint_id, lang_map=model_config.get('lang_code_map'))