morphoformer 2.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. morphoformer-2.1.3/LICENSE +21 -0
  2. morphoformer-2.1.3/PKG-INFO +213 -0
  3. morphoformer-2.1.3/README.md +192 -0
  4. morphoformer-2.1.3/morphoformer/__init__.py +1 -0
  5. morphoformer-2.1.3/morphoformer/__main__.py +3 -0
  6. morphoformer-2.1.3/morphoformer/cli.py +381 -0
  7. morphoformer-2.1.3/morphoformer/config/__init__.py +6 -0
  8. morphoformer-2.1.3/morphoformer/config/loader.py +89 -0
  9. morphoformer-2.1.3/morphoformer/config/presets.py +55 -0
  10. morphoformer-2.1.3/morphoformer/config/schema.py +99 -0
  11. morphoformer-2.1.3/morphoformer/data/__init__.py +4 -0
  12. morphoformer-2.1.3/morphoformer/data/dataset.py +153 -0
  13. morphoformer-2.1.3/morphoformer/data/download.py +177 -0
  14. morphoformer-2.1.3/morphoformer/data/feature_vocab.py +58 -0
  15. morphoformer-2.1.3/morphoformer/data/vocab.py +74 -0
  16. morphoformer-2.1.3/morphoformer/inference/__init__.py +2 -0
  17. morphoformer-2.1.3/morphoformer/inference/cache.py +29 -0
  18. morphoformer-2.1.3/morphoformer/inference/decode.py +75 -0
  19. morphoformer-2.1.3/morphoformer/modules/__init__.py +14 -0
  20. morphoformer-2.1.3/morphoformer/modules/adapter.py +51 -0
  21. morphoformer-2.1.3/morphoformer/modules/attention.py +174 -0
  22. morphoformer-2.1.3/morphoformer/modules/conv.py +47 -0
  23. morphoformer-2.1.3/morphoformer/modules/decoder.py +168 -0
  24. morphoformer-2.1.3/morphoformer/modules/encoder.py +118 -0
  25. morphoformer-2.1.3/morphoformer/modules/feedforward.py +36 -0
  26. morphoformer-2.1.3/morphoformer/modules/morph_encoder.py +78 -0
  27. morphoformer-2.1.3/morphoformer/modules/norm.py +29 -0
  28. morphoformer-2.1.3/morphoformer/modules/position.py +37 -0
  29. morphoformer-2.1.3/morphoformer/modules/registry.py +37 -0
  30. morphoformer-2.1.3/morphoformer/modules/transformer.py +173 -0
  31. morphoformer-2.1.3/morphoformer/training/__init__.py +3 -0
  32. morphoformer-2.1.3/morphoformer/training/memory.py +226 -0
  33. morphoformer-2.1.3/morphoformer/training/scheduler.py +21 -0
  34. morphoformer-2.1.3/morphoformer/training/trainer.py +203 -0
  35. morphoformer-2.1.3/morphoformer.egg-info/PKG-INFO +213 -0
  36. morphoformer-2.1.3/morphoformer.egg-info/SOURCES.txt +41 -0
  37. morphoformer-2.1.3/morphoformer.egg-info/dependency_links.txt +1 -0
  38. morphoformer-2.1.3/morphoformer.egg-info/entry_points.txt +2 -0
  39. morphoformer-2.1.3/morphoformer.egg-info/requires.txt +5 -0
  40. morphoformer-2.1.3/morphoformer.egg-info/top_level.txt +1 -0
  41. morphoformer-2.1.3/pyproject.toml +43 -0
  42. morphoformer-2.1.3/setup.cfg +4 -0
  43. morphoformer-2.1.3/setup.py +9 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025-2026 voluntasprogressus
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,213 @@
1
+ Metadata-Version: 2.4
2
+ Name: morphoformer
3
+ Version: 2.1.3
4
+ Summary: MorphFormer: multilingual morphological reinflection via character-level Transformer
5
+ Author: voluntasprogressus
6
+ License-Expression: MIT
7
+ Project-URL: Repository, https://github.com/voluntasprogressus/Morphological-Reinflection-Models
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.14
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
12
+ Classifier: Topic :: Text Processing :: Linguistic
13
+ Requires-Python: >=3.14
14
+ Description-Content-Type: text/markdown
15
+ License-File: LICENSE
16
+ Requires-Dist: torch>=2.0.0
17
+ Provides-Extra: dev
18
+ Requires-Dist: pytest>=7.0; extra == "dev"
19
+ Requires-Dist: ruff>=0.4.0; extra == "dev"
20
+ Dynamic: license-file
21
+
22
+ # MorphFormer v2
23
+
24
+ MorphFormer v2 - это улучшенная версия модели для мультиязычной морфологической реинфлексии. Модель основана на архитектуре Transformer с поддержкой нескольких языков и оптимизированными настройками DataLoader.
25
+
26
+ ## Особенности
27
+
28
+ - **Мультиязычность**: Поддержка множества языков через language adapters
29
+ - **Оптимизированный DataLoader**: Настройки для максимальной производительности
30
+ - **Гибкая конфигурация**: TOML-конфигурации с пресетами
31
+ - **Модульная архитектура**: Подключаемые модули для attention, feedforward, conv и других компонентов
32
+ - **Поддержка различных устройств**: CPU, CUDA, ROCm, XPU, MPS
33
+
34
+ ## Установка
35
+
36
+ ### Установка как пакет
37
+ ```bash
38
+ cd Morph_v2
39
+ pip install -e .
40
+ ```
41
+
42
+ ### Установка зависимостей
43
+ ```bash
44
+ pip install torch tomli
45
+ ```
46
+
47
+ ## Быстрый старт
48
+
49
+ ### 1. Скачать данные
50
+ ```bash
51
+ morphoformer download --lang rus --out-dir data
52
+ ```
53
+
54
+ ### 2. Создать конфигурацию
55
+ ```bash
56
+ # Используйте примеры конфигураций из config_examples/
57
+ # или создайте свою:
58
+ morphoformer init-config --preset medium --out config.toml
59
+ ```
60
+
61
+ ### 3. Обучить модель
62
+ ```bash
63
+ morphoformer train --config config.toml --data data/rus_train.tsv
64
+ ```
65
+
66
+ ### 4. Инференс
67
+ ```bash
68
+ morphoformer infer --checkpoint checkpoints/morphformer_epoch50.pt --word "тест" --morph "V;IND;PRS;3;SG" --lang rus
69
+ ```
70
+
71
+ ## Команды CLI
72
+
73
+ ### Обучение
74
+ ```bash
75
+ morphoformer train --config config.toml --data train.tsv [--val val.tsv] [--epochs 50] [--batch 64]
76
+ ```
77
+
78
+ ### Инференс
79
+ ```bash
80
+ morphoformer infer --checkpoint model.pt --word "слово" --morph "признаки;через;точку;с;запятой" [--lang rus]
81
+ ```
82
+
83
+ ### Интерактивный режим
84
+ ```bash
85
+ morphoformer serve --checkpoint model.pt
86
+ ```
87
+
88
+ ### Скачивание данных
89
+ ```bash
90
+ morphoformer download --lang all [--out-dir data] [--merge]
91
+ ```
92
+
93
+ ### Список модулей
94
+ ```bash
95
+ morphoformer modules
96
+ ```
97
+
98
+ ### Создание конфигурации
99
+ ```bash
100
+ morphoformer init-config --preset small|medium|large --out config.toml
101
+ ```
102
+
103
+ ## Конфигурация
104
+
105
+ Примеры конфигураций находятся в директории `config_examples/`.
106
+
107
+ ### Пресеты
108
+ - **small.toml**: Для CPU или GPU с ограниченной памятью
109
+ - **medium.toml**: Баланс производительности и качества
110
+ - **large.toml**: Для мощных GPU с 16+ GB VRAM
111
+
112
+ ### Настройки DataLoader
113
+ ```toml
114
+ [data]
115
+ num_workers = 2 # Количество worker-процессов (0 для Windows)
116
+ pin_memory = true # Pinned memory для GPU
117
+ prefetch_factor = 2 # Предзагрузка батчей
118
+ persistent_workers = false # Переиспользование workers
119
+ ```
120
+
121
+ ## Структура проекта
122
+
123
+ ```
124
+ morphoformer/
125
+ ├── __init__.py
126
+ ├── __main__.py
127
+ ├── cli.py
128
+ ├── config/
129
+ │ ├── __init__.py
130
+ │ ├── schema.py # Схема конфигурации
131
+ │ ├── loader.py # Загрузка TOML
132
+ │ └── presets.py # Пресеты моделей
133
+ ├── config_examples/ # Примеры конфигураций
134
+ ├── data/
135
+ │ ├── __init__.py
136
+ │ ├── vocab.py # Словарь символов
137
+ │ ├── feature_vocab.py # Словарь признаков
138
+ │ ├── dataset.py # Датасет
139
+ │ └── download.py # Загрузка данных
140
+ ├── inference/
141
+ │ ├── __init__.py
142
+ │ ├── decode.py # Декодирование
143
+ │ └── cache.py # Кэш KV
144
+ ├── modules/
145
+ │ ├── __init__.py
146
+ │ ├── transformer.py # Основная модель
147
+ │ ├── encoder.py # Энкодер
148
+ │ ├── decoder.py # Декодер
149
+ │ ├── registry.py # Реестр модулей
150
+ │ └── ... # Другие модули
151
+ └── training/
152
+ ├── __init__.py
153
+ ├── trainer.py # Тренер
154
+ ├── scheduler.py # Планировщик LR
155
+ └── memory.py # Управление памятью
156
+ ```
157
+
158
+ ## Примеры использования
159
+
160
+ ### Обучение с кастомными настройками
161
+ ```bash
162
+ morphoformer train \
163
+ --config config.toml \
164
+ --data train.tsv \
165
+ --batch 32 \
166
+ --num-workers 2 \
167
+ --pin-memory true \
168
+ --prefetch-factor 2
169
+ ```
170
+
171
+ ### Инференс с GPU
172
+ ```bash
173
+ morphoformer infer \
174
+ --checkpoint model.pt \
175
+ --word "бежать" \
176
+ --morph "V;IND;PRS;3;PL" \
177
+ --lang rus \
178
+ --device cuda
179
+ ```
180
+
181
+ ### Скачивание нескольких языков
182
+ ```bash
183
+ morphoformer download --lang rus,deu,fra --out-dir data --merge
184
+ ```
185
+
186
+ ## Оптимизация производительности
187
+
188
+ ### Для Windows
189
+ ```toml
190
+ num_workers = 0 # Отключить multiprocessing
191
+ pin_memory = true
192
+ prefetch_factor = 2
193
+ ```
194
+
195
+ ### Для Linux/macOS
196
+ ```toml
197
+ num_workers = 2 # Оптимально для 4-8 ядер
198
+ pin_memory = true
199
+ prefetch_factor = 2
200
+ persistent_workers = true
201
+ ```
202
+
203
+ ### Для мощных систем
204
+ ```toml
205
+ num_workers = 4 # Для 8+ ядер
206
+ pin_memory = true
207
+ prefetch_factor = 3 # Больше предзагрузки
208
+ persistent_workers = true
209
+ ```
210
+
211
+ ## Лицензия
212
+
213
+ MIT
@@ -0,0 +1,192 @@
1
+ # MorphFormer v2
2
+
3
+ MorphFormer v2 - это улучшенная версия модели для мультиязычной морфологической реинфлексии. Модель основана на архитектуре Transformer с поддержкой нескольких языков и оптимизированными настройками DataLoader.
4
+
5
+ ## Особенности
6
+
7
+ - **Мультиязычность**: Поддержка множества языков через language adapters
8
+ - **Оптимизированный DataLoader**: Настройки для максимальной производительности
9
+ - **Гибкая конфигурация**: TOML-конфигурации с пресетами
10
+ - **Модульная архитектура**: Подключаемые модули для attention, feedforward, conv и других компонентов
11
+ - **Поддержка различных устройств**: CPU, CUDA, ROCm, XPU, MPS
12
+
13
+ ## Установка
14
+
15
+ ### Установка как пакет
16
+ ```bash
17
+ cd Morph_v2
18
+ pip install -e .
19
+ ```
20
+
21
+ ### Установка зависимостей
22
+ ```bash
23
+ pip install torch tomli
24
+ ```
25
+
26
+ ## Быстрый старт
27
+
28
+ ### 1. Скачать данные
29
+ ```bash
30
+ morphoformer download --lang rus --out-dir data
31
+ ```
32
+
33
+ ### 2. Создать конфигурацию
34
+ ```bash
35
+ # Используйте примеры конфигураций из config_examples/
36
+ # или создайте свою:
37
+ morphoformer init-config --preset medium --out config.toml
38
+ ```
39
+
40
+ ### 3. Обучить модель
41
+ ```bash
42
+ morphoformer train --config config.toml --data data/rus_train.tsv
43
+ ```
44
+
45
+ ### 4. Инференс
46
+ ```bash
47
+ morphoformer infer --checkpoint checkpoints/morphformer_epoch50.pt --word "тест" --morph "V;IND;PRS;3;SG" --lang rus
48
+ ```
49
+
50
+ ## Команды CLI
51
+
52
+ ### Обучение
53
+ ```bash
54
+ morphoformer train --config config.toml --data train.tsv [--val val.tsv] [--epochs 50] [--batch 64]
55
+ ```
56
+
57
+ ### Инференс
58
+ ```bash
59
+ morphoformer infer --checkpoint model.pt --word "слово" --morph "признаки;через;точку;с;запятой" [--lang rus]
60
+ ```
61
+
62
+ ### Интерактивный режим
63
+ ```bash
64
+ morphoformer serve --checkpoint model.pt
65
+ ```
66
+
67
+ ### Скачивание данных
68
+ ```bash
69
+ morphoformer download --lang all [--out-dir data] [--merge]
70
+ ```
71
+
72
+ ### Список модулей
73
+ ```bash
74
+ morphoformer modules
75
+ ```
76
+
77
+ ### Создание конфигурации
78
+ ```bash
79
+ morphoformer init-config --preset small|medium|large --out config.toml
80
+ ```
81
+
82
+ ## Конфигурация
83
+
84
+ Примеры конфигураций находятся в директории `config_examples/`.
85
+
86
+ ### Пресеты
87
+ - **small.toml**: Для CPU или GPU с ограниченной памятью
88
+ - **medium.toml**: Баланс производительности и качества
89
+ - **large.toml**: Для мощных GPU с 16+ GB VRAM
90
+
91
+ ### Настройки DataLoader
92
+ ```toml
93
+ [data]
94
+ num_workers = 2 # Количество worker-процессов (0 для Windows)
95
+ pin_memory = true # Pinned memory для GPU
96
+ prefetch_factor = 2 # Предзагрузка батчей
97
+ persistent_workers = false # Переиспользование workers
98
+ ```
99
+
100
+ ## Структура проекта
101
+
102
+ ```
103
+ morphoformer/
104
+ ├── __init__.py
105
+ ├── __main__.py
106
+ ├── cli.py
107
+ ├── config/
108
+ │ ├── __init__.py
109
+ │ ├── schema.py # Схема конфигурации
110
+ │ ├── loader.py # Загрузка TOML
111
+ │ └── presets.py # Пресеты моделей
112
+ ├── config_examples/ # Примеры конфигураций
113
+ ├── data/
114
+ │ ├── __init__.py
115
+ │ ├── vocab.py # Словарь символов
116
+ │ ├── feature_vocab.py # Словарь признаков
117
+ │ ├── dataset.py # Датасет
118
+ │ └── download.py # Загрузка данных
119
+ ├── inference/
120
+ │ ├── __init__.py
121
+ │ ├── decode.py # Декодирование
122
+ │ └── cache.py # Кэш KV
123
+ ├── modules/
124
+ │ ├── __init__.py
125
+ │ ├── transformer.py # Основная модель
126
+ │ ├── encoder.py # Энкодер
127
+ │ ├── decoder.py # Декодер
128
+ │ ├── registry.py # Реестр модулей
129
+ │ └── ... # Другие модули
130
+ └── training/
131
+ ├── __init__.py
132
+ ├── trainer.py # Тренер
133
+ ├── scheduler.py # Планировщик LR
134
+ └── memory.py # Управление памятью
135
+ ```
136
+
137
+ ## Примеры использования
138
+
139
+ ### Обучение с кастомными настройками
140
+ ```bash
141
+ morphoformer train \
142
+ --config config.toml \
143
+ --data train.tsv \
144
+ --batch 32 \
145
+ --num-workers 2 \
146
+ --pin-memory true \
147
+ --prefetch-factor 2
148
+ ```
149
+
150
+ ### Инференс с GPU
151
+ ```bash
152
+ morphoformer infer \
153
+ --checkpoint model.pt \
154
+ --word "бежать" \
155
+ --morph "V;IND;PRS;3;PL" \
156
+ --lang rus \
157
+ --device cuda
158
+ ```
159
+
160
+ ### Скачивание нескольких языков
161
+ ```bash
162
+ morphoformer download --lang rus,deu,fra --out-dir data --merge
163
+ ```
164
+
165
+ ## Оптимизация производительности
166
+
167
+ ### Для Windows
168
+ ```toml
169
+ num_workers = 0 # Отключить multiprocessing
170
+ pin_memory = true
171
+ prefetch_factor = 2
172
+ ```
173
+
174
+ ### Для Linux/macOS
175
+ ```toml
176
+ num_workers = 2 # Оптимально для 4-8 ядер
177
+ pin_memory = true
178
+ prefetch_factor = 2
179
+ persistent_workers = true
180
+ ```
181
+
182
+ ### Для мощных систем
183
+ ```toml
184
+ num_workers = 4 # Для 8+ ядер
185
+ pin_memory = true
186
+ prefetch_factor = 3 # Больше предзагрузки
187
+ persistent_workers = true
188
+ ```
189
+
190
+ ## Лицензия
191
+
192
+ MIT
@@ -0,0 +1 @@
1
+ __version__ = "2.1.3"
@@ -0,0 +1,3 @@
1
+ from .cli import main
2
+
3
+ main()