# 插件化

插件化是SWIFT3.0中新增的重要能力。我们希望通过插件化的方式，让开发者对开发流程的定制更加自然。

## callback回调

example在[这里](https://github.com/modelscope/swift/blob/main/swift/plugin/callback.py).

callback会在trainer构造前注册进trainer中，example中给出了一个简单版本的EarlyStop方案。


## 定制化loss

example在[这里](https://github.com/modelscope/swift/blob/main/swift/plugin/loss.py).

用户可以在这里定制自己的loss实现方案。

## 定制化loss_scale

example在[这里](https://github.com/modelscope/swift/blob/main/swift/plugin/loss_scale.py).

用户可以在这里定制loss_scale，实现对不同token的不同权重定义。

## 定制化metric

example在[这里](https://github.com/modelscope/swift/blob/main/swift/plugin/metric.py).

用户可以在这里定制交叉验证阶段使用的评测指标。

## 定制化optimizer

example在[这里](https://github.com/modelscope/swift/blob/main/swift/plugin/optimizer.py).

用户可以在这里增加自己的optimizer和lr_scheduler实现。

## 定制化tools

example在[这里](https://github.com/modelscope/swift/blob/main/swift/plugin/tools.py).

用户可以在这里增加用于Agent的tools格式。

## 定制化tuner

example在[这里](https://github.com/modelscope/swift/blob/main/swift/plugin/tuner.py).

用户可以在这里增加新的自定义tuner。
