twinkle-kit 0.2.dev0__tar.gz → 0.2.1__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 (299) hide show
  1. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/PKG-INFO +72 -39
  2. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/README.md +69 -37
  3. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/pyproject.toml +3 -3
  4. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/setup.cfg +1 -1
  5. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/checkpoint_engine/base.py +3 -1
  6. twinkle_kit-0.2.1/src/twinkle/checkpoint_engine/hccl_checkpoint_engine.py +478 -0
  7. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/checkpoint_engine/manager.py +37 -7
  8. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/checkpoint_engine/mixin.py +9 -1
  9. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/data_format/message.py +1 -4
  10. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/data_format/output.py +4 -2
  11. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/data_format/sampling.py +56 -12
  12. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/data_format/trajectory.py +5 -3
  13. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/dataloader/device_mesh_fetcher.py +4 -0
  14. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/dataloader/retry_sampler.py +5 -0
  15. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/dataset/base.py +40 -10
  16. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/dataset/iterable_packing_dataset.py +2 -2
  17. twinkle_kit-0.2.1/src/twinkle/dataset/lazy_dataset.py +209 -0
  18. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/hub/hub.py +23 -12
  19. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/infra/__init__.py +31 -1
  20. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/infra/_ray/ray_helper.py +1 -1
  21. twinkle_kit-0.2.1/src/twinkle/infra/collectors.py +53 -0
  22. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/loss/__init__.py +10 -3
  23. twinkle_kit-0.2.1/src/twinkle/loss/cross_entropy.py +40 -0
  24. twinkle_kit-0.2.1/src/twinkle/loss/dpo.py +551 -0
  25. twinkle_kit-0.2.1/src/twinkle/loss/gkd.py +231 -0
  26. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/loss/grpo.py +5 -18
  27. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/metric/__init__.py +1 -0
  28. twinkle_kit-0.2.1/src/twinkle/metric/dpo.py +215 -0
  29. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/metric/loss.py +16 -11
  30. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/metric/train_metric.py +4 -2
  31. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/model/base.py +13 -2
  32. twinkle_kit-0.2.1/src/twinkle/model/megatron/_mindspeed_runtime.py +221 -0
  33. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/model/megatron/megatron.py +319 -390
  34. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/model/megatron/multi_lora_megatron.py +98 -61
  35. twinkle_kit-0.2.1/src/twinkle/model/megatron/strategy/megatron.py +325 -0
  36. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/model/multi_lora.py +153 -52
  37. twinkle_kit-0.2.1/src/twinkle/model/optimizer_group.py +85 -0
  38. twinkle_kit-0.2.1/src/twinkle/model/transformers/moe/__init__.py +4 -0
  39. twinkle_kit-0.2.1/src/twinkle/model/transformers/moe/ep_utils.py +291 -0
  40. twinkle_kit-0.2.1/src/twinkle/model/transformers/moe/expert_parallel.py +501 -0
  41. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/model/transformers/multi_lora_transformers.py +51 -11
  42. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/model/transformers/strategy/accelerate.py +22 -7
  43. twinkle_kit-0.2.1/src/twinkle/model/transformers/strategy/load_context.py +27 -0
  44. twinkle_kit-0.2.1/src/twinkle/model/transformers/strategy/native_fsdp.py +499 -0
  45. twinkle_kit-0.2.dev0/src/twinkle/model/transformers/strategy/sequence_parallel.py → twinkle_kit-0.2.1/src/twinkle/model/transformers/strategy/sequence_parallel/__init__.py +410 -500
  46. twinkle_kit-0.2.1/src/twinkle/model/transformers/strategy/sequence_parallel/linear_attention_sp.py +278 -0
  47. twinkle_kit-0.2.1/src/twinkle/model/transformers/strategy/sequence_parallel/utils.py +383 -0
  48. twinkle_kit-0.2.1/src/twinkle/model/transformers/strategy/sequence_parallel/zigzag_ring_attn.py +642 -0
  49. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/model/transformers/transformers.py +247 -160
  50. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/patch/base.py +2 -2
  51. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/patch/megatron_peft.py +5 -0
  52. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/patch/vllm_lora_weights.py +4 -0
  53. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/patch/vllm_moe_loader.py +10 -0
  54. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/preprocessor/__init__.py +4 -1
  55. twinkle_kit-0.2.1/src/twinkle/preprocessor/base.py +42 -0
  56. twinkle_kit-0.2.1/src/twinkle/preprocessor/dpo.py +76 -0
  57. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/preprocessor/llm.py +56 -13
  58. twinkle_kit-0.2.1/src/twinkle/preprocessor/mm.py +67 -0
  59. twinkle_kit-0.2.1/src/twinkle/preprocessor/olympiad_bench.py +132 -0
  60. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/processor/base.py +168 -22
  61. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/reward/__init__.py +2 -0
  62. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/reward/gsm8k.py +35 -9
  63. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/reward/math_reward.py +15 -5
  64. twinkle_kit-0.2.1/src/twinkle/reward/mm_reward.py +70 -0
  65. twinkle_kit-0.2.1/src/twinkle/reward/olympiad_bench.py +420 -0
  66. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/sampler/__init__.py +0 -2
  67. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/sampler/base.py +6 -1
  68. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/sampler/vllm_sampler/vllm_engine.py +220 -145
  69. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/sampler/vllm_sampler/vllm_sampler.py +149 -127
  70. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/sampler/vllm_sampler/vllm_worker_extension.py +185 -72
  71. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/server/__main__.py +8 -24
  72. twinkle_kit-0.2.1/src/twinkle/server/common/__init__.py +13 -0
  73. twinkle_kit-0.2.1/src/twinkle/server/common/checkpoint_factory.py +39 -0
  74. {twinkle_kit-0.2.dev0/src/twinkle/server/tinker → twinkle_kit-0.2.1/src/twinkle/server}/common/datum.py +55 -12
  75. {twinkle_kit-0.2.dev0/src/twinkle/server/tinker → twinkle_kit-0.2.1/src/twinkle/server}/common/router.py +3 -1
  76. twinkle_kit-0.2.1/src/twinkle/server/common/tinker_checkpoint.py +134 -0
  77. twinkle_kit-0.2.dev0/src/twinkle/server/twinkle/common/io_utils.py → twinkle_kit-0.2.1/src/twinkle/server/common/twinkle_checkpoint.py +22 -118
  78. twinkle_kit-0.2.1/src/twinkle/server/gateway/__init__.py +3 -0
  79. {twinkle_kit-0.2.dev0/src/twinkle/server/tinker → twinkle_kit-0.2.1/src/twinkle/server/gateway}/proxy.py +25 -58
  80. twinkle_kit-0.2.1/src/twinkle/server/gateway/server.py +119 -0
  81. twinkle_kit-0.2.1/src/twinkle/server/gateway/tinker_gateway_handlers.py +273 -0
  82. twinkle_kit-0.2.1/src/twinkle/server/gateway/twinkle_gateway_handlers.py +141 -0
  83. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/server/launcher.py +78 -102
  84. twinkle_kit-0.2.1/src/twinkle/server/model/__init__.py +3 -0
  85. twinkle_kit-0.2.1/src/twinkle/server/model/app.py +193 -0
  86. twinkle_kit-0.2.1/src/twinkle/server/model/backends/common.py +274 -0
  87. twinkle_kit-0.2.1/src/twinkle/server/model/backends/megatron_model.py +110 -0
  88. twinkle_kit-0.2.1/src/twinkle/server/model/backends/transformers_model.py +105 -0
  89. twinkle_kit-0.2.1/src/twinkle/server/model/tinker_handlers.py +306 -0
  90. twinkle_kit-0.2.1/src/twinkle/server/model/twinkle_handlers.py +581 -0
  91. twinkle_kit-0.2.1/src/twinkle/server/processor/__init__.py +3 -0
  92. twinkle_kit-0.2.1/src/twinkle/server/processor/app.py +138 -0
  93. twinkle_kit-0.2.1/src/twinkle/server/processor/twinkle_handlers.py +130 -0
  94. twinkle_kit-0.2.1/src/twinkle/server/sampler/__init__.py +3 -0
  95. twinkle_kit-0.2.1/src/twinkle/server/sampler/app.py +144 -0
  96. twinkle_kit-0.2.1/src/twinkle/server/sampler/tinker_handlers.py +129 -0
  97. twinkle_kit-0.2.1/src/twinkle/server/sampler/twinkle_handlers.py +196 -0
  98. twinkle_kit-0.2.1/src/twinkle/server/utils/__init__.py +7 -0
  99. twinkle_kit-0.2.dev0/src/twinkle/server/utils/io_utils.py → twinkle_kit-0.2.1/src/twinkle/server/utils/checkpoint_base.py +40 -35
  100. twinkle_kit-0.2.1/src/twinkle/server/utils/lifecycle/__init__.py +8 -0
  101. twinkle_kit-0.2.1/src/twinkle/server/utils/lifecycle/adapter.py +109 -0
  102. twinkle_kit-0.2.1/src/twinkle/server/utils/lifecycle/base.py +328 -0
  103. twinkle_kit-0.2.1/src/twinkle/server/utils/lifecycle/processor.py +109 -0
  104. twinkle_kit-0.2.1/src/twinkle/server/utils/metrics.py +267 -0
  105. twinkle_kit-0.2.1/src/twinkle/server/utils/ray_serve_patch.py +141 -0
  106. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/server/utils/state/server_state.py +91 -102
  107. twinkle_kit-0.2.1/src/twinkle/server/utils/task_queue/__init__.py +26 -0
  108. twinkle_kit-0.2.1/src/twinkle/server/utils/task_queue/config.py +79 -0
  109. twinkle_kit-0.2.1/src/twinkle/server/utils/task_queue/mixin.py +362 -0
  110. {twinkle_kit-0.2.dev0/src/twinkle/server/utils → twinkle_kit-0.2.1/src/twinkle/server/utils/task_queue}/rate_limiter.py +23 -54
  111. twinkle_kit-0.2.1/src/twinkle/server/utils/task_queue/types.py +49 -0
  112. twinkle_kit-0.2.1/src/twinkle/server/utils/task_queue/worker.py +292 -0
  113. twinkle_kit-0.2.1/src/twinkle/server/utils/template_utils.py +47 -0
  114. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/server/utils/validation.py +25 -6
  115. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/template/__init__.py +1 -1
  116. twinkle_kit-0.2.1/src/twinkle/template/base.py +743 -0
  117. twinkle_kit-0.2.1/src/twinkle/template/qwen3_5_vl.py +166 -0
  118. twinkle_kit-0.2.1/src/twinkle/template/utils.py +370 -0
  119. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/__init__.py +3 -1
  120. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/device_mesh.py +49 -1
  121. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/framework.py +15 -3
  122. twinkle_kit-0.2.1/src/twinkle/utils/grad_clip.py +240 -0
  123. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/parallel.py +17 -2
  124. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/torch_utils.py +67 -8
  125. twinkle_kit-0.2.1/src/twinkle/utils/vision_tools.py +54 -0
  126. twinkle_kit-0.2.1/src/twinkle/utils/zmq_utils.py +26 -0
  127. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/version.py +1 -1
  128. twinkle_kit-0.2.1/src/twinkle_client/__init__.py +75 -0
  129. {twinkle_kit-0.2.dev0/src/twinkle/server/twinkle → twinkle_kit-0.2.1/src/twinkle_client}/common/serialize.py +12 -5
  130. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_client/dataloader/dataloader.py +7 -14
  131. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_client/dataset/base.py +25 -19
  132. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_client/dataset/iterable_dataset.py +8 -15
  133. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_client/dataset/iterable_packing_dataset.py +7 -14
  134. twinkle_kit-0.2.1/src/twinkle_client/dataset/lazy_dataset.py +146 -0
  135. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_client/dataset/packing_dataset.py +6 -13
  136. twinkle_kit-0.2.1/src/twinkle_client/http/__init__.py +19 -0
  137. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_client/http/http_utils.py +23 -6
  138. twinkle_kit-0.2.1/src/twinkle_client/http/utils.py +64 -0
  139. twinkle_kit-0.2.1/src/twinkle_client/manager.py +403 -0
  140. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_client/model/multi_lora_transformers.py +108 -78
  141. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_client/processor/base.py +4 -11
  142. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_client/sampler/vllm_sampler.py +21 -37
  143. twinkle_kit-0.2.1/src/twinkle_client/types/__init__.py +91 -0
  144. twinkle_kit-0.2.1/src/twinkle_client/types/checkpoint.py +23 -0
  145. twinkle_kit-0.2.1/src/twinkle_client/types/model.py +312 -0
  146. twinkle_kit-0.2.1/src/twinkle_client/types/processor.py +46 -0
  147. twinkle_kit-0.2.1/src/twinkle_client/types/sampler.py +74 -0
  148. twinkle_kit-0.2.1/src/twinkle_client/types/server.py +42 -0
  149. twinkle_kit-0.2.1/src/twinkle_client/types/session.py +24 -0
  150. twinkle_kit-0.2.1/src/twinkle_client/types/training.py +91 -0
  151. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_client/utils/patch_tinker.py +4 -3
  152. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_kit.egg-info/PKG-INFO +72 -39
  153. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_kit.egg-info/SOURCES.txt +69 -55
  154. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_kit.egg-info/requires.txt +2 -1
  155. twinkle_kit-0.2.dev0/src/twinkle/checkpoint_engine/hccl_checkpoint_engine.py +0 -439
  156. twinkle_kit-0.2.dev0/src/twinkle/dataset/lazy_dataset.py +0 -43
  157. twinkle_kit-0.2.dev0/src/twinkle/loss/cross_entropy.py +0 -20
  158. twinkle_kit-0.2.dev0/src/twinkle/loss/vocab_parallel_cross_entropy.py +0 -20
  159. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/args.py +0 -692
  160. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/model/__init__.py +0 -4
  161. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/model/constant.py +0 -39
  162. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/model/gpt_bridge.py +0 -1651
  163. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/model/gpt_model.py +0 -465
  164. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/model/gpts/__init__.py +0 -14
  165. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/model/gpts/qwen3_next.py +0 -512
  166. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/model/mm_gpt_model.py +0 -136
  167. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/model/mm_gpts/__init__.py +0 -2
  168. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/model/mm_gpts/qwen.py +0 -121
  169. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/model/mm_gpts/qwen3_5.py +0 -174
  170. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/model/mm_gpts/qwen3_vl.py +0 -450
  171. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/model/mm_gpts/utils.py +0 -83
  172. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/model/register.py +0 -98
  173. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/model/rope.py +0 -175
  174. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/strategy/megatron.py +0 -176
  175. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/tuners/__init__.py +0 -8
  176. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/tuners/lora.py +0 -583
  177. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/tuners/utils.py +0 -206
  178. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/utils/__init__.py +0 -2
  179. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/utils/config.py +0 -201
  180. twinkle_kit-0.2.dev0/src/twinkle/model/megatron/utils/utils.py +0 -32
  181. twinkle_kit-0.2.dev0/src/twinkle/model/transformers/moe/__init__.py +0 -4
  182. twinkle_kit-0.2.dev0/src/twinkle/model/transformers/moe/expert_parallel.py +0 -379
  183. twinkle_kit-0.2.dev0/src/twinkle/model/transformers/strategy/native_fsdp.py +0 -178
  184. twinkle_kit-0.2.dev0/src/twinkle/preprocessor/base.py +0 -15
  185. twinkle_kit-0.2.dev0/src/twinkle/sampler/torch_sampler/__init__.py +0 -1
  186. twinkle_kit-0.2.dev0/src/twinkle/sampler/torch_sampler/torch_sampler.py +0 -157
  187. twinkle_kit-0.2.dev0/src/twinkle/sampler/torch_sampler/transformers_engine.py +0 -298
  188. twinkle_kit-0.2.dev0/src/twinkle/server/tinker/__init__.py +0 -18
  189. twinkle_kit-0.2.dev0/src/twinkle/server/tinker/common/__init__.py +0 -3
  190. twinkle_kit-0.2.dev0/src/twinkle/server/tinker/common/compat_base.py +0 -151
  191. twinkle_kit-0.2.dev0/src/twinkle/server/tinker/common/io_utils.py +0 -181
  192. twinkle_kit-0.2.dev0/src/twinkle/server/tinker/common/megatron_model.py +0 -189
  193. twinkle_kit-0.2.dev0/src/twinkle/server/tinker/common/transformers_model.py +0 -148
  194. twinkle_kit-0.2.dev0/src/twinkle/server/tinker/model.py +0 -659
  195. twinkle_kit-0.2.dev0/src/twinkle/server/tinker/sampler.py +0 -251
  196. twinkle_kit-0.2.dev0/src/twinkle/server/tinker/server.py +0 -613
  197. twinkle_kit-0.2.dev0/src/twinkle/server/twinkle/__init__.py +0 -20
  198. twinkle_kit-0.2.dev0/src/twinkle/server/twinkle/model.py +0 -584
  199. twinkle_kit-0.2.dev0/src/twinkle/server/twinkle/processor.py +0 -188
  200. twinkle_kit-0.2.dev0/src/twinkle/server/twinkle/sampler.py +0 -308
  201. twinkle_kit-0.2.dev0/src/twinkle/server/twinkle/server.py +0 -270
  202. twinkle_kit-0.2.dev0/src/twinkle/server/utils/__init__.py +0 -7
  203. twinkle_kit-0.2.dev0/src/twinkle/server/utils/adapter_manager.py +0 -341
  204. twinkle_kit-0.2.dev0/src/twinkle/server/utils/task_queue.py +0 -570
  205. twinkle_kit-0.2.dev0/src/twinkle/template/base.py +0 -441
  206. twinkle_kit-0.2.dev0/src/twinkle/template/qwen3_vl.py +0 -120
  207. twinkle_kit-0.2.dev0/src/twinkle/template/utils.py +0 -222
  208. twinkle_kit-0.2.dev0/src/twinkle/utils/grad_clip.py +0 -95
  209. twinkle_kit-0.2.dev0/src/twinkle_client/__init__.py +0 -51
  210. twinkle_kit-0.2.dev0/src/twinkle_client/dataset/lazy_dataset.py +0 -95
  211. twinkle_kit-0.2.dev0/src/twinkle_client/http/__init__.py +0 -22
  212. twinkle_kit-0.2.dev0/src/twinkle_client/http/heartbeat.py +0 -177
  213. twinkle_kit-0.2.dev0/src/twinkle_client/http/utils.py +0 -68
  214. twinkle_kit-0.2.dev0/src/twinkle_client/manager.py +0 -294
  215. twinkle_kit-0.2.dev0/src/twinkle_client/processor/grpo.py +0 -48
  216. twinkle_kit-0.2.dev0/src/twinkle_client/reward/__init__.py +0 -11
  217. twinkle_kit-0.2.dev0/src/twinkle_client/reward/math_reward.py +0 -56
  218. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/LICENSE +0 -0
  219. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/__init__.py +0 -0
  220. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/advantage/__init__.py +0 -0
  221. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/advantage/base.py +0 -0
  222. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/advantage/grpo.py +0 -0
  223. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/advantage/rloo.py +0 -0
  224. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/checkpoint_engine/__init__.py +0 -0
  225. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/checkpoint_engine/nccl_checkpoint_engine.py +0 -0
  226. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/data_format/__init__.py +0 -0
  227. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/data_format/input_feature.py +0 -0
  228. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/dataloader/__init__.py +0 -0
  229. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/dataloader/dataloader.py +0 -0
  230. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/dataloader/device_mesh_sampler.py +0 -0
  231. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/dataset/__init__.py +0 -0
  232. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/dataset/iterable_dataset.py +0 -0
  233. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/dataset/packing_dataset.py +0 -0
  234. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/gym/__init__.py +0 -0
  235. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/gym/base.py +0 -0
  236. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/hub/__init__.py +0 -0
  237. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/infra/_ray/__init__.py +0 -0
  238. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/infra/_ray/resource_manager.py +0 -0
  239. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/kernel/__init__.py +0 -0
  240. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/kernel/base.py +0 -0
  241. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/kernel/function.py +0 -0
  242. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/kernel/layer.py +0 -0
  243. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/kernel/registry.py +0 -0
  244. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/loss/base.py +0 -0
  245. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/loss/chunked_cross_entropy.py +0 -0
  246. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/loss/mse.py +0 -0
  247. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/loss_scale/__init__.py +0 -0
  248. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/loss_scale/base.py +0 -0
  249. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/metric/accuracy.py +0 -0
  250. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/metric/base.py +0 -0
  251. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/metric/completion_and_reward.py +0 -0
  252. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/model/__init__.py +0 -0
  253. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/model/megatron/__init__.py +0 -0
  254. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/model/megatron/strategy/__init__.py +0 -0
  255. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/model/transformers/__init__.py +0 -0
  256. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/model/transformers/strategy/__init__.py +0 -0
  257. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/module/__init__.py +0 -0
  258. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/module/scheduler/__init__.py +0 -0
  259. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/module/scheduler/cosine_warmup.py +0 -0
  260. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/module/scheduler/linear_warmup.py +0 -0
  261. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/patch/__init__.py +0 -0
  262. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/processor/__init__.py +0 -0
  263. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/processor/grpo.py +0 -0
  264. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/reward/base.py +0 -0
  265. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/reward/format_reward.py +0 -0
  266. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/sampler/base_engine.py +0 -0
  267. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/sampler/vllm_sampler/__init__.py +0 -0
  268. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/server/__init__.py +0 -0
  269. {twinkle_kit-0.2.dev0/src/twinkle/server/twinkle/common → twinkle_kit-0.2.1/src/twinkle/server/model/backends}/__init__.py +0 -0
  270. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/server/utils/device_utils.py +0 -0
  271. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/server/utils/state/__init__.py +0 -0
  272. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/server/utils/state/base.py +0 -0
  273. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/server/utils/state/config_manager.py +0 -0
  274. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/server/utils/state/future_manager.py +0 -0
  275. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/server/utils/state/model_manager.py +0 -0
  276. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/server/utils/state/models.py +0 -0
  277. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/server/utils/state/sampling_manager.py +0 -0
  278. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/server/utils/state/session_manager.py +0 -0
  279. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/dequantizer.py +0 -0
  280. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/import_utils.py +0 -0
  281. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/loader.py +0 -0
  282. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/logger.py +0 -0
  283. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/network.py +0 -0
  284. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/platforms/__init__.py +0 -0
  285. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/platforms/base.py +0 -0
  286. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/platforms/gpu.py +0 -0
  287. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/platforms/mps.py +0 -0
  288. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/platforms/npu.py +0 -0
  289. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/safetensors.py +0 -0
  290. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/transformers_utils.py +0 -0
  291. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/unsafe.py +0 -0
  292. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle/utils/utils.py +0 -0
  293. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_client/dataloader/__init__.py +0 -0
  294. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_client/dataset/__init__.py +0 -0
  295. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_client/model/__init__.py +0 -0
  296. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_client/processor/__init__.py +0 -0
  297. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_client/sampler/__init__.py +0 -0
  298. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_kit.egg-info/dependency_links.txt +0 -0
  299. {twinkle_kit-0.2.dev0 → twinkle_kit-0.2.1}/src/twinkle_kit.egg-info/top_level.txt +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: twinkle-kit
3
- Version: 0.2.dev0
3
+ Version: 0.2.1
4
4
  Summary: Training API for large language models with efficient data handling and advanced optimization techniques.
5
5
  Author-email: ModelScope <contact@modelscope.cn>
6
6
  Requires-Python: <3.13,>=3.11
7
7
  Description-Content-Type: text/markdown
8
8
  License-File: LICENSE
9
- Requires-Dist: datasets<4.0,>=3.0
10
9
  Requires-Dist: numpy<2.3.0,>=2.0.0
10
+ Requires-Dist: datasets
11
11
  Requires-Dist: omegaconf<3.0.0,>=2.3.0
12
12
  Requires-Dist: fastapi
13
13
  Requires-Dist: modelscope[framework]>=1.34.0
@@ -23,6 +23,7 @@ Requires-Dist: kernels; extra == "kernels"
23
23
  Provides-Extra: megatron
24
24
  Requires-Dist: megatron-core>=0.12.0; extra == "megatron"
25
25
  Requires-Dist: transformer-engine[pytorch]; extra == "megatron"
26
+ Requires-Dist: mcore_bridge; extra == "megatron"
26
27
  Provides-Extra: vllm
27
28
  Requires-Dist: vllm>=0.11; extra == "vllm"
28
29
  Provides-Extra: ray
@@ -45,7 +46,7 @@ Dynamic: license-file
45
46
 
46
47
  <p align="center">
47
48
  <img src="assets/slogan.png" width="200"/>
48
- <p>
49
+ </p>
49
50
  <p align="center">
50
51
  by <a href="https://modelscope.cn/home">ModelScope</a>
51
52
  <br>
@@ -62,7 +63,7 @@ by <a href="https://modelscope.cn/home">ModelScope</a>
62
63
  </p>
63
64
 
64
65
  <p align="center">
65
- <a href="https://twinkle-kit.readthedocs.io/en/latest/">English Documentation</a> &nbsp | &nbsp <a href="https://twinkle-kit.readthedocs.io/zh-cn/latest/">中文文档</a> &nbsp
66
+ <a href="https://twinkle-kit.readthedocs.io/en/latest/">English Documentation</a> &nbsp | &nbsp <a href="https://twinkle-kit.readthedocs.io/zh-cn/latest/">中文文档</a> &nbsp | &nbsp <a href="https://modelscope.github.io/twinkle-web/">Twinkle Web</a> &nbsp
66
67
  </p>
67
68
 
68
69
  ## ✨ What is Twinkle?
@@ -73,8 +74,8 @@ with `torchrun`, or scaling training across Ray clusters,
73
74
  Twinkle✨ eliminates infrastructure friction by encapsulating
74
75
  training logic into standardized APIs. Beyond simple
75
76
  abstraction, Twinkle✨ serves as a robust backend and gateway to enable serverless Training-as-a-Service (TaaS).
76
- It offers interfaces that constitute a _superset_ of [Tinker](https://thinkingmachines.ai/tinker/) APIs,
77
- thereby making it possible to access a Twinkle✨ training service via Tinker client or native Twinkle✨ client
77
+ It offers interfaces that constitute a _superset_ of [Tinker](https://thinkingmachines.ai/tinker/) APIs,
78
+ thereby making it possible to access a Twinkle✨ training service via Tinker client or the native Twinkle✨ client,
78
79
  which offers more functionalities.
79
80
 
80
81
  🧩 <b>Decoupled Architecture</b>: Standardized Interfaces, backward compatible with Tinker APIs.<br>
@@ -82,13 +83,13 @@ which offers more functionalities.
82
83
  🔌 <b>Versatile Backends</b>: Transformers / Megatron.<br>
83
84
  👥 <b>Multi-Tenancy Training Service</b>: Train multiple LoRAs that share one base model deployment.<br>
84
85
 
85
- Note: Twinkle✨is built by the team behind [ms-swift](https://github.com/modelscope/ms-swift), and
86
+ Note: Twinkle✨ is built by the team behind [ms-swift](https://github.com/modelscope/ms-swift), and
86
87
  we expect the two projects to evolve together. We expect some fundamental components in Twinkle✨will likely
87
88
  be reused in [ms-swift](https://github.com/modelscope/ms-swift).
88
89
 
89
- | Twinkle Wechat Group |
90
- |:------------------------------------------------------:|
91
- | <img src="assets/wechat.jpg" width="200" height="200"> |
90
+ [Discord Group](https://discord.gg/yeN59wxjwe) | Twinkle Wechat Group |
91
+ :------------------------------------------------------:|:------------------------------------------------------:|
92
+ <img src="assets/discord_qr.jpg" width="200" height="200"> | <img src="assets/wechat.jpg" width="200" height="200"> |
92
93
 
93
94
  ## Installation
94
95
 
@@ -106,32 +107,66 @@ cd twinkle
106
107
  pip install -e .
107
108
  ```
108
109
 
110
+ ### Use our docker image:
111
+
112
+ ```text
113
+ modelscope-registry.cn-hangzhou.cr.aliyuncs.com/modelscope-repo/modelscope:twinkle-0.2.0
114
+ ```
115
+
116
+ If you need to use Twinkle's Client, you can use our one-click installation script:
117
+
118
+ ```shell
119
+ # Mac or Linux
120
+ sh INSTALL_CLIENT.sh
121
+ # Windows, Open with powershell
122
+ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
123
+ .\INSTALL_CLIENT.ps1
124
+ ```
125
+
126
+ This script will download or utilize conda to create a virtual environment called `twinkle-client`, which can be directly used for remote training.
127
+
128
+ If you need to install Megatron-related dependencies, you can use the following script:
129
+
130
+ ```shell
131
+ sh INSTALL_MEGATRON.sh
132
+ ```
133
+
109
134
  ## Tutorials
110
135
 
111
- | Training Type | Model Framework | Cookbook Path |
112
- | --------------------------------- | --------------- | ------------------------------------------------- |
113
- | FSDP finetuning | transformers | [Script](cookbook/transformers/fsdp2.py) |
114
- | FSDP MoE finetuning | transformers | [Script](cookbook/transformers/fsdp2_moe.py) |
115
- | ep FSDP MoE finetuning | transformers | [Script](cookbook/transformers/ep_fsdp_qwen3_moe.py) |
116
- | sp FSDP finetuning | transformers | [Script](cookbook/transformers/sp_fsdp_dense.py) |
117
- | EP MoE finetuning | transformers | [Script](cookbook/transformers/ep_fsdp_qwen3_moe.py) |
118
- | pp/tp/cp finetuning | megatron | [Script](cookbook/megatron/tp.py) |
119
- | pp/tp/cp MoE finetuning | megatron | [Script](cookbook/megatron/tp_moe.py) |
120
- | tinker client finetuning | megatron | [Script](cookbook/client/tinker/megatron) |
121
- | tinker client finetuning/sampling | transformers | [Script](cookbook/client/tinker/transformer) |
122
- | twinkle client finetuning | megatron | [Script](cookbook/client/twinkle/megatron) |
123
- | twinkle client finetuning | transformer | [Script](cookbook/client/twinkle/transformer) |
136
+ | Training Type | Model Framework | Cookbook Path |
137
+ | ------------------------------------ | --------------- | ----------------------------------------------------- |
138
+ | FSDP finetuning | transformers | [Script](cookbook/transformers/fsdp2.py) |
139
+ | FSDP MoE finetuning | transformers | [Script](cookbook/transformers/fsdp2_moe.py) |
140
+ | EP FSDP MoE finetuning | transformers | [Script](cookbook/transformers/ep_fsdp_qwen3_moe.py) |
141
+ | SP FSDP finetuning | transformers | [Script](cookbook/transformers/sp_fsdp_dense.py) |
142
+ | pp/tp/cp finetuning | megatron | [Script](cookbook/megatron/tp.py) |
143
+ | pp/tp/cp MoE finetuning | megatron | [Script](cookbook/megatron/tp_moe.py) |
144
+ | Multimodal FSDP finetuning | transformers | [Script](cookbook/mm/fsdp2.py) |
145
+ | GRPO RL training | megatron | [Script](cookbook/rl/grpo.py) |
146
+ | GRPO Multimodal RL training | megatron | [Script](cookbook/rl/grpo_mm.py) |
147
+ | GRPO Math RL training | megatron | [Script](cookbook/rl/short_math_grpo.py) |
148
+ | DPO full-parameter training | transformers | [Script](cookbook/rl/dpo_full.py) |
149
+ | DPO LoRA training | transformers | [Script](cookbook/rl/dpo_lora.py) |
150
+ | DPO multi-LoRA training | transformers | [Script](cookbook/rl/dpo_multi_lora.py) |
151
+ | GKD on-policy distillation | megatron | [Script](cookbook/rl/gkd_on_policy.py) |
152
+ | GKD off-policy distillation | megatron | [Script](cookbook/rl/gkd_off_policy.py) |
153
+ | Tinker client finetuning (self-host) | transformers | [Script](cookbook/client/tinker/self_host) |
154
+ | Tinker client finetuning (ModelScope) | transformers | [Script](cookbook/client/tinker/modelscope) |
155
+ | Twinkle client finetuning (self-host) | transformers | [Script](cookbook/client/twinkle/self_host) |
156
+ | Twinkle client finetuning (ModelScope) | transformers | [Script](cookbook/client/twinkle/modelscope) |
157
+ | Server startup scripts | transformers/megatron | [Script](cookbook/client/server) |
124
158
 
125
159
  ## Changelog
126
-
160
+ - 🎉2026-04-22 The ModelScope service has been deployed to [Qwen/Qwen3.6-27B](https://www.modelscope.cn/models/Qwen/Qwen3.6-27B) with a new release 0.2.1.
161
+ - 🎉2026-04-14 The ModelScope service has been deployed to [Qwen/Qwen3.6-35B-A3B](https://www.modelscope.cn/models/Qwen/Qwen3.6-35B-A3B) with a new release 0.2.0.
162
+ - 🎉2026-03-28 Support DPO training with both Transformers and Megatron backends. See [dpo_full.py](cookbook/rl/dpo_full.py) and [dpo_lora.py](cookbook/rl/dpo_lora.py).
163
+ - 🎉2026-03-24 Twinkle Web site is now live at https://modelscope.github.io/twinkle-web/
164
+ - 🎉2026-03-19 Support GKD training, please refer to this [cookbook](cookbook/rl/gkd_on_policy.py).
127
165
  - 🎉2026-02-13 Initial version of Twinkle✨ released, including SFT/PT/RL support for text models.
128
- We also made available serverless training capabilities on [ModelScope](https://modelscope.cn) via
129
- Tinker-compatible APIs.
130
166
 
131
167
  ## Training as a Service on ModelScope
132
168
 
133
- We are rolling out training service built atop Twinkle✨ on ModelScope. It is currently in _Beta_. You may
134
- sign up for free access by joining the [Twinkle-Explorers](https://modelscope.cn/organization/twinkle-explorers) organization, and
169
+ We are rolling out training service built atop Twinkle✨ on ModelScope. You may
135
170
  train via API endpoint `base_url=https://www.modelscope.cn/twinkle`. For more details, please refer to
136
171
  our [documentation](docs/source_en/Usage%20Guide/Train-as-a-Service.md).
137
172
 
@@ -140,7 +175,7 @@ our [documentation](docs/source_en/Usage%20Guide/Train-as-a-Service.md).
140
175
  | Hardware Environment | Notes |
141
176
  | -------------------- | ---------------------------------------------------------------- |
142
177
  | Nvidia GPUs | ✅ Support for BF16/Flash-Attn may be incomplete in earlier GPUs |
143
- | Ascend NPU | ✅ Some operators may not supported |
178
+ | Ascend NPU | ✅ Some operators may not be supported |
144
179
  | PPU | ✅ |
145
180
  | CPU | Supports partial components like dataset, dataloader |
146
181
 
@@ -153,15 +188,15 @@ supported on Twinkle✨ framework.
153
188
  > For serverless training service accessed via `base_url=https://www.modelscope.cn/twinkle`, it
154
189
  > is currently provided via the Tinker-compatible APIs. We will be rolling out services that support
155
190
  > both Tinker APIs, as well as the full-fledged Twinkle✨ native APIs. The serverless endpoint is backed
156
- > by one training base at a time, and currently it is [Qwen3-30B-A3B-Instruct-2507](https://modelscope.cn/models/Qwen/Qwen3-30B-A3B-Instruct-2507).
191
+ > by one training base at a time, and currently it is [Qwen3.6-27B](https://modelscope.cn/models/Qwen/Qwen3.6-27B).
157
192
 
158
193
  | Model Type | Model ID on [ModelScope](https://modelscope.cn) | Model Size | Requires | Support Megatron | HF Model ID |
159
194
  |---------------------|-----------------------------------------------------------------------------------------------------------------|:---------------------------------------:|----------------------|:----------------:|:---------------------------------------------------------------------------------------------------------:|
160
195
  | qwen3 series | [Qwen/Qwen3-14B-Base](https://modelscope.cn/models/Qwen/Qwen3-14B-Base) | 0.6B/1.7B/4B/8B/14B | transformers>=4.51 | ✔ | [Qwen/Qwen3-14B-Base](https://huggingface.co/Qwen/Qwen3-14B-Base) |
161
196
  | | [Qwen/Qwen3-32B](https://modelscope.cn/models/Qwen/Qwen3-32B) | 0.6B/1.7B/4B/8B/14B/32B | transformers>=4.51 | ✔ | [Qwen/Qwen3-32B](https://huggingface.co/Qwen/Qwen3-32B) |
162
197
  | qwen3_moe series | [Qwen/Qwen3-30B-A3B-Base](https://modelscope.cn/models/Qwen/Qwen3-30B-A3B-Base) | 30B-A3B/A3B-Base,235B-A22B | transformers>=4.51 | ✔ | [Qwen/Qwen3-30B-A3B-Base](https://huggingface.co/Qwen/Qwen3-30B-A3B-Base) |
163
- | qwen3.5 moe series | [Qwen/Qwen3.5-35B-A3B](https://www.modelscope.cn/models/Qwen/Qwen3.5-35B-A3B) | 35B-A3B,122B-A10B, etc. | transformers>=5.20 | ✔ | [Qwen/Qwen3.5-35B-A3B](https://huggingface.co/Qwen/Qwen3.5-35B-A3B) |
164
- | qwen3.5 series | [Qwen/Qwen3.5-9B](https://www.modelscope.cn/models/Qwen/Qwen3.5-9B) | 2B ~ 27B | transformers>=5.20 | ✔ | [Qwen/Qwen3.5-9B](https://huggingface.co/Qwen/Qwen3.5-9B) |
198
+ | qwen3.5 moe series | [Qwen/Qwen3.5-35B-A3B](https://www.modelscope.cn/models/Qwen/Qwen3.5-35B-A3B) | 35B-A3B,122B-A10B, etc. | transformers>=5.2.0 | ✔ | [Qwen/Qwen3.5-35B-A3B](https://huggingface.co/Qwen/Qwen3.5-35B-A3B) |
199
+ | qwen3.5 series | [Qwen/Qwen3.5-9B](https://www.modelscope.cn/models/Qwen/Qwen3.5-9B) | 2B ~ 27B | transformers>=5.2.0 | ✔ | [Qwen/Qwen3.5-9B](https://huggingface.co/Qwen/Qwen3.5-9B) |
165
200
  | qwen2 series | [Qwen/Qwen2-0.5B-Instruct](https://modelscope.cn/models/Qwen/Qwen2-0.5B-Instruct) | 0.5B/1.5B/7B/72B | transformers>=4.37 | ✔ | [Qwen/Qwen2-0.5B-Instruct](https://huggingface.co/Qwen/Qwen2-0.5B-Instruct) |
166
201
  | | [Qwen/Qwen2-1.5B](https://modelscope.cn/models/Qwen/Qwen2-1.5B) | 0.5B/1.5B/7B/72B | transformers>=4.37 | ✔ | [Qwen/Qwen2-1.5B](https://huggingface.co/Qwen/Qwen2-1.5B) |
167
202
  | | [Qwen/Qwen2.5-1.5B-Instruct](https://modelscope.cn/models/Qwen/Qwen2.5-1.5B-Instruct) | 0.5B/1.5B/3B/7B/14B/32B/72B | transformers>=4.37 | ✔ | [Qwen/Qwen2.5-1.5B-Instruct](https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct) |
@@ -178,8 +213,6 @@ supported on Twinkle✨ framework.
178
213
  | | [deepseek-ai/DeepSeek-R1](https://modelscope.cn/models/deepseek-ai/DeepSeek-R1) | - | transformers>=4.39.3 | ✔ | [deepseek-ai/DeepSeek-R1](https://huggingface.co/deepseek-ai/DeepSeek-R1) |
179
214
  | deepSeek-r1-distill | [deepseek-ai/DeepSeek-R1-Distill-Qwen-7B](https://modelscope.cn/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B) | 1.5B/7B/14B/32B | transformers>=4.37 | ✔ | [deepseek-ai/DeepSeek-R1-Distill-Qwen-7B](https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B) |
180
215
 
181
- For more detailed model support list 👉 [Quick Start](docs/source_en/Usage%20Guide/Quick-Start.md)
182
-
183
216
  ## Sample Code
184
217
 
185
218
  Below are some of the capabilities demonstrated in the example code. For a complete introduction to training capabilities,
@@ -204,11 +237,11 @@ twinkle.initialize(mode='ray', groups=device_group, global_device_mesh=device_me
204
237
 
205
238
  def train():
206
239
  # to load model from Hugging Face, use 'hf://...'
207
- base_model = 'ms://Qwen/Qwen3.5-4B'
240
+ base_model = 'ms://Qwen/Qwen3.6-27B'
208
241
  # 1000 samples
209
242
  dataset = Dataset(dataset_meta=DatasetMeta('ms://swift/self-cognition', data_slice=range(1000)))
210
243
  # Set template to prepare encoding
211
- dataset.set_template('Template', model_id=base_model)
244
+ dataset.set_template('Qwen3_5Template', model_id=base_model)
212
245
  # Preprocess the dataset to standard format
213
246
  dataset.map(SelfCognitionProcessor('twinkle LLM', 'ModelScope Community'))
214
247
  # Encode dataset
@@ -258,15 +291,15 @@ from twinkle import init_tinker_client
258
291
  from twinkle.dataloader import DataLoader
259
292
  from twinkle.dataset import Dataset, DatasetMeta
260
293
  from twinkle.preprocessor import SelfCognitionProcessor
261
- from twinkle.server.tinker.common import input_feature_to_datum
294
+ from twinkle.server.common import input_feature_to_datum
262
295
 
263
- base_model = 'ms://Qwen/Qwen3-30B-A3B-Instruct-2507'
296
+ base_model = 'ms://Qwen/Qwen3.6-27B'
264
297
  base_url='your-base-url'
265
298
  api_key='your-api-key'
266
299
 
267
300
  # Use twinkle dataset to load the data
268
301
  dataset = Dataset(dataset_meta=DatasetMeta('ms://swift/self-cognition', data_slice=range(500)))
269
- dataset.set_template('Template', model_id=base_model, max_length=256)
302
+ dataset.set_template('Qwen3_5Template', model_id=base_model, max_length=256)
270
303
  dataset.map(SelfCognitionProcessor('twinkle Model', 'ModelScope Team'), load_from_cache_file=False)
271
304
  dataset.encode(batched=True, load_from_cache_file=False)
272
305
  dataloader = DataLoader(dataset=dataset, batch_size=8)
@@ -2,7 +2,7 @@
2
2
 
3
3
  <p align="center">
4
4
  <img src="assets/slogan.png" width="200"/>
5
- <p>
5
+ </p>
6
6
  <p align="center">
7
7
  by <a href="https://modelscope.cn/home">ModelScope</a>
8
8
  <br>
@@ -19,7 +19,7 @@ by <a href="https://modelscope.cn/home">ModelScope</a>
19
19
  </p>
20
20
 
21
21
  <p align="center">
22
- <a href="https://twinkle-kit.readthedocs.io/en/latest/">English Documentation</a> &nbsp | &nbsp <a href="https://twinkle-kit.readthedocs.io/zh-cn/latest/">中文文档</a> &nbsp
22
+ <a href="https://twinkle-kit.readthedocs.io/en/latest/">English Documentation</a> &nbsp | &nbsp <a href="https://twinkle-kit.readthedocs.io/zh-cn/latest/">中文文档</a> &nbsp | &nbsp <a href="https://modelscope.github.io/twinkle-web/">Twinkle Web</a> &nbsp
23
23
  </p>
24
24
 
25
25
  ## ✨ What is Twinkle?
@@ -30,8 +30,8 @@ with `torchrun`, or scaling training across Ray clusters,
30
30
  Twinkle✨ eliminates infrastructure friction by encapsulating
31
31
  training logic into standardized APIs. Beyond simple
32
32
  abstraction, Twinkle✨ serves as a robust backend and gateway to enable serverless Training-as-a-Service (TaaS).
33
- It offers interfaces that constitute a _superset_ of [Tinker](https://thinkingmachines.ai/tinker/) APIs,
34
- thereby making it possible to access a Twinkle✨ training service via Tinker client or native Twinkle✨ client
33
+ It offers interfaces that constitute a _superset_ of [Tinker](https://thinkingmachines.ai/tinker/) APIs,
34
+ thereby making it possible to access a Twinkle✨ training service via Tinker client or the native Twinkle✨ client,
35
35
  which offers more functionalities.
36
36
 
37
37
  🧩 <b>Decoupled Architecture</b>: Standardized Interfaces, backward compatible with Tinker APIs.<br>
@@ -39,13 +39,13 @@ which offers more functionalities.
39
39
  🔌 <b>Versatile Backends</b>: Transformers / Megatron.<br>
40
40
  👥 <b>Multi-Tenancy Training Service</b>: Train multiple LoRAs that share one base model deployment.<br>
41
41
 
42
- Note: Twinkle✨is built by the team behind [ms-swift](https://github.com/modelscope/ms-swift), and
42
+ Note: Twinkle✨ is built by the team behind [ms-swift](https://github.com/modelscope/ms-swift), and
43
43
  we expect the two projects to evolve together. We expect some fundamental components in Twinkle✨will likely
44
44
  be reused in [ms-swift](https://github.com/modelscope/ms-swift).
45
45
 
46
- | Twinkle Wechat Group |
47
- |:------------------------------------------------------:|
48
- | <img src="assets/wechat.jpg" width="200" height="200"> |
46
+ [Discord Group](https://discord.gg/yeN59wxjwe) | Twinkle Wechat Group |
47
+ :------------------------------------------------------:|:------------------------------------------------------:|
48
+ <img src="assets/discord_qr.jpg" width="200" height="200"> | <img src="assets/wechat.jpg" width="200" height="200"> |
49
49
 
50
50
  ## Installation
51
51
 
@@ -63,32 +63,66 @@ cd twinkle
63
63
  pip install -e .
64
64
  ```
65
65
 
66
+ ### Use our docker image:
67
+
68
+ ```text
69
+ modelscope-registry.cn-hangzhou.cr.aliyuncs.com/modelscope-repo/modelscope:twinkle-0.2.0
70
+ ```
71
+
72
+ If you need to use Twinkle's Client, you can use our one-click installation script:
73
+
74
+ ```shell
75
+ # Mac or Linux
76
+ sh INSTALL_CLIENT.sh
77
+ # Windows, Open with powershell
78
+ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
79
+ .\INSTALL_CLIENT.ps1
80
+ ```
81
+
82
+ This script will download or utilize conda to create a virtual environment called `twinkle-client`, which can be directly used for remote training.
83
+
84
+ If you need to install Megatron-related dependencies, you can use the following script:
85
+
86
+ ```shell
87
+ sh INSTALL_MEGATRON.sh
88
+ ```
89
+
66
90
  ## Tutorials
67
91
 
68
- | Training Type | Model Framework | Cookbook Path |
69
- | --------------------------------- | --------------- | ------------------------------------------------- |
70
- | FSDP finetuning | transformers | [Script](cookbook/transformers/fsdp2.py) |
71
- | FSDP MoE finetuning | transformers | [Script](cookbook/transformers/fsdp2_moe.py) |
72
- | ep FSDP MoE finetuning | transformers | [Script](cookbook/transformers/ep_fsdp_qwen3_moe.py) |
73
- | sp FSDP finetuning | transformers | [Script](cookbook/transformers/sp_fsdp_dense.py) |
74
- | EP MoE finetuning | transformers | [Script](cookbook/transformers/ep_fsdp_qwen3_moe.py) |
75
- | pp/tp/cp finetuning | megatron | [Script](cookbook/megatron/tp.py) |
76
- | pp/tp/cp MoE finetuning | megatron | [Script](cookbook/megatron/tp_moe.py) |
77
- | tinker client finetuning | megatron | [Script](cookbook/client/tinker/megatron) |
78
- | tinker client finetuning/sampling | transformers | [Script](cookbook/client/tinker/transformer) |
79
- | twinkle client finetuning | megatron | [Script](cookbook/client/twinkle/megatron) |
80
- | twinkle client finetuning | transformer | [Script](cookbook/client/twinkle/transformer) |
92
+ | Training Type | Model Framework | Cookbook Path |
93
+ | ------------------------------------ | --------------- | ----------------------------------------------------- |
94
+ | FSDP finetuning | transformers | [Script](cookbook/transformers/fsdp2.py) |
95
+ | FSDP MoE finetuning | transformers | [Script](cookbook/transformers/fsdp2_moe.py) |
96
+ | EP FSDP MoE finetuning | transformers | [Script](cookbook/transformers/ep_fsdp_qwen3_moe.py) |
97
+ | SP FSDP finetuning | transformers | [Script](cookbook/transformers/sp_fsdp_dense.py) |
98
+ | pp/tp/cp finetuning | megatron | [Script](cookbook/megatron/tp.py) |
99
+ | pp/tp/cp MoE finetuning | megatron | [Script](cookbook/megatron/tp_moe.py) |
100
+ | Multimodal FSDP finetuning | transformers | [Script](cookbook/mm/fsdp2.py) |
101
+ | GRPO RL training | megatron | [Script](cookbook/rl/grpo.py) |
102
+ | GRPO Multimodal RL training | megatron | [Script](cookbook/rl/grpo_mm.py) |
103
+ | GRPO Math RL training | megatron | [Script](cookbook/rl/short_math_grpo.py) |
104
+ | DPO full-parameter training | transformers | [Script](cookbook/rl/dpo_full.py) |
105
+ | DPO LoRA training | transformers | [Script](cookbook/rl/dpo_lora.py) |
106
+ | DPO multi-LoRA training | transformers | [Script](cookbook/rl/dpo_multi_lora.py) |
107
+ | GKD on-policy distillation | megatron | [Script](cookbook/rl/gkd_on_policy.py) |
108
+ | GKD off-policy distillation | megatron | [Script](cookbook/rl/gkd_off_policy.py) |
109
+ | Tinker client finetuning (self-host) | transformers | [Script](cookbook/client/tinker/self_host) |
110
+ | Tinker client finetuning (ModelScope) | transformers | [Script](cookbook/client/tinker/modelscope) |
111
+ | Twinkle client finetuning (self-host) | transformers | [Script](cookbook/client/twinkle/self_host) |
112
+ | Twinkle client finetuning (ModelScope) | transformers | [Script](cookbook/client/twinkle/modelscope) |
113
+ | Server startup scripts | transformers/megatron | [Script](cookbook/client/server) |
81
114
 
82
115
  ## Changelog
83
-
116
+ - 🎉2026-04-22 The ModelScope service has been deployed to [Qwen/Qwen3.6-27B](https://www.modelscope.cn/models/Qwen/Qwen3.6-27B) with a new release 0.2.1.
117
+ - 🎉2026-04-14 The ModelScope service has been deployed to [Qwen/Qwen3.6-35B-A3B](https://www.modelscope.cn/models/Qwen/Qwen3.6-35B-A3B) with a new release 0.2.0.
118
+ - 🎉2026-03-28 Support DPO training with both Transformers and Megatron backends. See [dpo_full.py](cookbook/rl/dpo_full.py) and [dpo_lora.py](cookbook/rl/dpo_lora.py).
119
+ - 🎉2026-03-24 Twinkle Web site is now live at https://modelscope.github.io/twinkle-web/
120
+ - 🎉2026-03-19 Support GKD training, please refer to this [cookbook](cookbook/rl/gkd_on_policy.py).
84
121
  - 🎉2026-02-13 Initial version of Twinkle✨ released, including SFT/PT/RL support for text models.
85
- We also made available serverless training capabilities on [ModelScope](https://modelscope.cn) via
86
- Tinker-compatible APIs.
87
122
 
88
123
  ## Training as a Service on ModelScope
89
124
 
90
- We are rolling out training service built atop Twinkle✨ on ModelScope. It is currently in _Beta_. You may
91
- sign up for free access by joining the [Twinkle-Explorers](https://modelscope.cn/organization/twinkle-explorers) organization, and
125
+ We are rolling out training service built atop Twinkle✨ on ModelScope. You may
92
126
  train via API endpoint `base_url=https://www.modelscope.cn/twinkle`. For more details, please refer to
93
127
  our [documentation](docs/source_en/Usage%20Guide/Train-as-a-Service.md).
94
128
 
@@ -97,7 +131,7 @@ our [documentation](docs/source_en/Usage%20Guide/Train-as-a-Service.md).
97
131
  | Hardware Environment | Notes |
98
132
  | -------------------- | ---------------------------------------------------------------- |
99
133
  | Nvidia GPUs | ✅ Support for BF16/Flash-Attn may be incomplete in earlier GPUs |
100
- | Ascend NPU | ✅ Some operators may not supported |
134
+ | Ascend NPU | ✅ Some operators may not be supported |
101
135
  | PPU | ✅ |
102
136
  | CPU | Supports partial components like dataset, dataloader |
103
137
 
@@ -110,15 +144,15 @@ supported on Twinkle✨ framework.
110
144
  > For serverless training service accessed via `base_url=https://www.modelscope.cn/twinkle`, it
111
145
  > is currently provided via the Tinker-compatible APIs. We will be rolling out services that support
112
146
  > both Tinker APIs, as well as the full-fledged Twinkle✨ native APIs. The serverless endpoint is backed
113
- > by one training base at a time, and currently it is [Qwen3-30B-A3B-Instruct-2507](https://modelscope.cn/models/Qwen/Qwen3-30B-A3B-Instruct-2507).
147
+ > by one training base at a time, and currently it is [Qwen3.6-27B](https://modelscope.cn/models/Qwen/Qwen3.6-27B).
114
148
 
115
149
  | Model Type | Model ID on [ModelScope](https://modelscope.cn) | Model Size | Requires | Support Megatron | HF Model ID |
116
150
  |---------------------|-----------------------------------------------------------------------------------------------------------------|:---------------------------------------:|----------------------|:----------------:|:---------------------------------------------------------------------------------------------------------:|
117
151
  | qwen3 series | [Qwen/Qwen3-14B-Base](https://modelscope.cn/models/Qwen/Qwen3-14B-Base) | 0.6B/1.7B/4B/8B/14B | transformers>=4.51 | ✔ | [Qwen/Qwen3-14B-Base](https://huggingface.co/Qwen/Qwen3-14B-Base) |
118
152
  | | [Qwen/Qwen3-32B](https://modelscope.cn/models/Qwen/Qwen3-32B) | 0.6B/1.7B/4B/8B/14B/32B | transformers>=4.51 | ✔ | [Qwen/Qwen3-32B](https://huggingface.co/Qwen/Qwen3-32B) |
119
153
  | qwen3_moe series | [Qwen/Qwen3-30B-A3B-Base](https://modelscope.cn/models/Qwen/Qwen3-30B-A3B-Base) | 30B-A3B/A3B-Base,235B-A22B | transformers>=4.51 | ✔ | [Qwen/Qwen3-30B-A3B-Base](https://huggingface.co/Qwen/Qwen3-30B-A3B-Base) |
120
- | qwen3.5 moe series | [Qwen/Qwen3.5-35B-A3B](https://www.modelscope.cn/models/Qwen/Qwen3.5-35B-A3B) | 35B-A3B,122B-A10B, etc. | transformers>=5.20 | ✔ | [Qwen/Qwen3.5-35B-A3B](https://huggingface.co/Qwen/Qwen3.5-35B-A3B) |
121
- | qwen3.5 series | [Qwen/Qwen3.5-9B](https://www.modelscope.cn/models/Qwen/Qwen3.5-9B) | 2B ~ 27B | transformers>=5.20 | ✔ | [Qwen/Qwen3.5-9B](https://huggingface.co/Qwen/Qwen3.5-9B) |
154
+ | qwen3.5 moe series | [Qwen/Qwen3.5-35B-A3B](https://www.modelscope.cn/models/Qwen/Qwen3.5-35B-A3B) | 35B-A3B,122B-A10B, etc. | transformers>=5.2.0 | ✔ | [Qwen/Qwen3.5-35B-A3B](https://huggingface.co/Qwen/Qwen3.5-35B-A3B) |
155
+ | qwen3.5 series | [Qwen/Qwen3.5-9B](https://www.modelscope.cn/models/Qwen/Qwen3.5-9B) | 2B ~ 27B | transformers>=5.2.0 | ✔ | [Qwen/Qwen3.5-9B](https://huggingface.co/Qwen/Qwen3.5-9B) |
122
156
  | qwen2 series | [Qwen/Qwen2-0.5B-Instruct](https://modelscope.cn/models/Qwen/Qwen2-0.5B-Instruct) | 0.5B/1.5B/7B/72B | transformers>=4.37 | ✔ | [Qwen/Qwen2-0.5B-Instruct](https://huggingface.co/Qwen/Qwen2-0.5B-Instruct) |
123
157
  | | [Qwen/Qwen2-1.5B](https://modelscope.cn/models/Qwen/Qwen2-1.5B) | 0.5B/1.5B/7B/72B | transformers>=4.37 | ✔ | [Qwen/Qwen2-1.5B](https://huggingface.co/Qwen/Qwen2-1.5B) |
124
158
  | | [Qwen/Qwen2.5-1.5B-Instruct](https://modelscope.cn/models/Qwen/Qwen2.5-1.5B-Instruct) | 0.5B/1.5B/3B/7B/14B/32B/72B | transformers>=4.37 | ✔ | [Qwen/Qwen2.5-1.5B-Instruct](https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct) |
@@ -135,8 +169,6 @@ supported on Twinkle✨ framework.
135
169
  | | [deepseek-ai/DeepSeek-R1](https://modelscope.cn/models/deepseek-ai/DeepSeek-R1) | - | transformers>=4.39.3 | ✔ | [deepseek-ai/DeepSeek-R1](https://huggingface.co/deepseek-ai/DeepSeek-R1) |
136
170
  | deepSeek-r1-distill | [deepseek-ai/DeepSeek-R1-Distill-Qwen-7B](https://modelscope.cn/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B) | 1.5B/7B/14B/32B | transformers>=4.37 | ✔ | [deepseek-ai/DeepSeek-R1-Distill-Qwen-7B](https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B) |
137
171
 
138
- For more detailed model support list 👉 [Quick Start](docs/source_en/Usage%20Guide/Quick-Start.md)
139
-
140
172
  ## Sample Code
141
173
 
142
174
  Below are some of the capabilities demonstrated in the example code. For a complete introduction to training capabilities,
@@ -161,11 +193,11 @@ twinkle.initialize(mode='ray', groups=device_group, global_device_mesh=device_me
161
193
 
162
194
  def train():
163
195
  # to load model from Hugging Face, use 'hf://...'
164
- base_model = 'ms://Qwen/Qwen3.5-4B'
196
+ base_model = 'ms://Qwen/Qwen3.6-27B'
165
197
  # 1000 samples
166
198
  dataset = Dataset(dataset_meta=DatasetMeta('ms://swift/self-cognition', data_slice=range(1000)))
167
199
  # Set template to prepare encoding
168
- dataset.set_template('Template', model_id=base_model)
200
+ dataset.set_template('Qwen3_5Template', model_id=base_model)
169
201
  # Preprocess the dataset to standard format
170
202
  dataset.map(SelfCognitionProcessor('twinkle LLM', 'ModelScope Community'))
171
203
  # Encode dataset
@@ -215,15 +247,15 @@ from twinkle import init_tinker_client
215
247
  from twinkle.dataloader import DataLoader
216
248
  from twinkle.dataset import Dataset, DatasetMeta
217
249
  from twinkle.preprocessor import SelfCognitionProcessor
218
- from twinkle.server.tinker.common import input_feature_to_datum
250
+ from twinkle.server.common import input_feature_to_datum
219
251
 
220
- base_model = 'ms://Qwen/Qwen3-30B-A3B-Instruct-2507'
252
+ base_model = 'ms://Qwen/Qwen3.6-27B'
221
253
  base_url='your-base-url'
222
254
  api_key='your-api-key'
223
255
 
224
256
  # Use twinkle dataset to load the data
225
257
  dataset = Dataset(dataset_meta=DatasetMeta('ms://swift/self-cognition', data_slice=range(500)))
226
- dataset.set_template('Template', model_id=base_model, max_length=256)
258
+ dataset.set_template('Qwen3_5Template', model_id=base_model, max_length=256)
227
259
  dataset.map(SelfCognitionProcessor('twinkle Model', 'ModelScope Team'), load_from_cache_file=False)
228
260
  dataset.encode(batched=True, load_from_cache_file=False)
229
261
  dataloader = DataLoader(dataset=dataset, batch_size=8)
@@ -1,13 +1,13 @@
1
1
  [project]
2
2
  name = "twinkle-kit"
3
- version = "0.2.dev0"
3
+ version = "0.2.1"
4
4
  description = "Training API for large language models with efficient data handling and advanced optimization techniques."
5
5
  readme = "README.md"
6
6
  authors = [{ name = "ModelScope", email = "contact@modelscope.cn" }]
7
7
  requires-python = ">=3.11,<3.13"
8
8
  dependencies = [
9
- "datasets>=3.0,<4.0",
10
9
  "numpy>=2.0.0,<2.3.0",
10
+ "datasets",
11
11
  "omegaconf>=2.3.0,<3.0.0",
12
12
  "fastapi",
13
13
  "modelscope[framework]>=1.34.0",
@@ -23,7 +23,7 @@ transformers = [
23
23
  "torchvision",
24
24
  ]
25
25
  kernels = ["kernels"]
26
- megatron = ["megatron-core>=0.12.0", "transformer-engine[pytorch]"]
26
+ megatron = ["megatron-core>=0.12.0", "transformer-engine[pytorch]", "mcore_bridge"]
27
27
  vllm = ["vllm>=0.11"]
28
28
  ray = ["ray[serve]"]
29
29
  tinker = ["tinker==0.14.0"]
@@ -22,7 +22,7 @@ ignore-words-list = patten,nd,ty,mot,hist,formating,winn,gool,datas,wan,confids
22
22
  [flake8]
23
23
  max-line-length = 120
24
24
  select = B,E,F,P,T4,W,B9
25
- ignore = F401,F403,F405,F821,W503,E251,W504,E126
25
+ ignore = F401,F403,F405,F821,W503,E251,W504,E126,E125
26
26
  exclude = docs/src,*.pyi,.git,peft.py
27
27
 
28
28
  [darglint]
@@ -1,7 +1,7 @@
1
1
  # Copyright (c) ModelScope Contributors. All rights reserved.
2
2
  # Adapted from https://github.com/volcengine/verl/blob/main/verl/checkpoint_engine/base.py
3
3
  from abc import ABC, abstractmethod
4
- from typing import TYPE_CHECKING, Any, AsyncGenerator, Generator, TypedDict
4
+ from typing import TYPE_CHECKING, Any, AsyncGenerator, Generator, Optional, TypedDict
5
5
 
6
6
  if TYPE_CHECKING:
7
7
  import torch
@@ -38,6 +38,8 @@ class CheckpointEngine(ABC):
38
38
  >>> engine.finalize()
39
39
  """
40
40
 
41
+ rank: Optional[int] = None
42
+
41
43
  @abstractmethod
42
44
  def prepare(self) -> dict[str, Any]:
43
45
  """Prepare the checkpoint engine before weight synchronization.