Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,9 @@ pip install -e .

## Changelog

- 🎉2026-02-13 Initial version of Twinkle✨ released, including SFT/PT/RL support for text models and serverless training capabilities on [ModelScope](https://modelscope.cn).
- 🎉2026-02-13 Initial version of Twinkle✨ released, including SFT/PT/RL support for text models.
We also made available serverless training capabilities on [ModelScope](https://modelscope.cn) via
Tinker-compatible APIs.

## Training as a Service on ModelScope

Expand All @@ -105,8 +107,10 @@ We will be adding support for more models as new models are released. The follow
supported on Twinkle✨ framework.

>[!Note]
> For serverless training service accessed via `base_url=https://www.modelscope.cn/twinkle`, it currently supports
> 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).
> For serverless training service accessed via `base_url=https://www.modelscope.cn/twinkle`, it
> is currently provided via the Tinker-compatible APIs. We will be rolling out services that support
> both Tinker APIs, as well as the full-fledged Twinkle✨ native APIs. The serverless endpoint is backed
> 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).


| Model Type | Model ID on [ModelScope](https://modelscope.cn) | Requires | Megatron Support | HF Model ID |
Expand Down Expand Up @@ -197,7 +201,7 @@ if __name__ == '__main__':
train()
```

### Using Tinker-Like API
### Access the Serverless Training Services via Tinker-compatible API

```python
import os
Expand Down
4 changes: 2 additions & 2 deletions src/twinkle/metric/train_metric.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def calculate(self):
self.lr = self.lr[0]
if isinstance(self.lr, list):
for idx, lr in enumerate(self.lr):
results[f'learning rate(param group {idx+1})'] = lr
results[f'learning rate(param group {idx + 1})'] = lr
else:
results['learning rate'] = self.lr
if self.step is not None:
Expand All @@ -54,7 +54,7 @@ def calculate(self):
if interval < 60:
results['total time elapse'] = f'{(time.time() - self.start_time):.0f} seconds'
else:
results['total time elapse'] = f'{(time.time() - self.start_time)/60:.1f} minutes'
results['total time elapse'] = f'{(time.time() - self.start_time) / 60:.1f} minutes'
results['speed'] = f'{speed:.2f} iters/s'
self.reset()
return results
Loading