# fastNLP
[//]: # ([![Build Status](https://travis-ci.org/fastnlp/fastNLP.svg?branch=master)](https://travis-ci.org/fastnlp/fastNLP))
[//]: # ([![codecov](https://codecov.io/gh/fastnlp/fastNLP/branch/master/graph/badge.svg)](https://codecov.io/gh/fastnlp/fastNLP))
[//]: # ([![Pypi](https://img.shields.io/pypi/v/fastNLP.svg)](https://pypi.org/project/fastNLP))
[//]: # (![Hex.pm](https://img.shields.io/hexpm/l/plug.svg))
[//]: # ([![Documentation Status](https://readthedocs.org/projects/fastnlp/badge/?version=latest)](http://fastnlp.readthedocs.io/?badge=latest))
fastNLP是一款轻量级的自然语言处理(NLP)工具包,目标是减少用户项目中的工程型代码,例如数据处理循环、训练循环、多卡运行等。
fastNLP具有如下的特性:
- 便捷。在数据处理中可以通过apply函数避免循环、使用多进程提速等;在训练循环阶段可以很方便定制操作。
- 高效。无需改动代码,实现fp16切换、多卡、ZeRO优化等。
- 兼容。fastNLP支持多种深度学习框架作为后端。
> :warning: **为了实现对不同深度学习架构的兼容,fastNLP 1.0.0之后的版本重新设计了架构,因此与过去的fastNLP版本不完全兼容,
> 基于更早的fastNLP代码需要做一定的调整**:
## fastNLP文档
[中文文档](http://www.fastnlp.top/docs/fastNLP/master/index.html)
## 安装指南
fastNLP可以通过以下的命令进行安装
```shell
pip install fastNLP>=1.0.0alpha
```
如果需要安装更早版本的fastNLP请指定版本号,例如
```shell
pip install fastNLP==0.7.1
```
另外,请根据使用的深度学习框架,安装相应的深度学习框架。
<details>
<summary>Pytorch</summary>
下面是使用pytorch来进行文本分类的例子。需要安装torch>=1.6.0。
```python
from fastNLP.io import ChnSentiCorpLoader
from functools import partial
from fastNLP import cache_results
from fastNLP.transformers.torch import BertTokenizer
# 使用cache_results装饰器装饰函数,将prepare_data的返回结果缓存到caches/cache.pkl,再次运行时,如果
# 该文件还存在,将自动读取缓存文件,而不再次运行预处理代码。
@cache_results('caches/cache.pkl')
def prepare_data():
# 会自动下载数据,并且可以通过文档看到返回的 dataset 应该是包含"raw_words"和"target"两个field的
data_bundle = ChnSentiCorpLoader().load()
# 使用tokenizer对数据进行tokenize
tokenizer = BertTokenizer.from_pretrained('hfl/chinese-bert-wwm')
tokenize = partial(tokenizer, max_length=256) # 限制数据的最大长度
data_bundle.apply_field_more(tokenize, field_name='raw_chars', num_proc=4) # 会新增"input_ids", "attention_mask"等field进入dataset中
data_bundle.apply_field(int, field_name='target', new_field_name='labels') # 将int函数应用到每个target上,并且放入新的labels field中
return data_bundle
data_bundle = prepare_data()
print(data_bundle.get_dataset('train')[:4])
# 初始化model, optimizer
from fastNLP.transformers.torch import BertForSequenceClassification
from torch import optim
model = BertForSequenceClassification.from_pretrained('hfl/chinese-bert-wwm')
optimizer = optim.AdamW(model.parameters(), lr=2e-5)
# 准备dataloader
from fastNLP import prepare_dataloader
dls = prepare_dataloader(data_bundle, batch_size=32)
# 准备训练
from fastNLP import Trainer, Accuracy, LoadBestModelCallback, TorchWarmupCallback, Event
callbacks = [
TorchWarmupCallback(warmup=0.1, schedule='linear'), # 训练过程中调整学习率。
LoadBestModelCallback() # 将在训练结束之后,加载性能最优的model
]
# 在训练特定时机加入一些操作, 不同时机能够获取到的参数不一样,可以通过Trainer.on函数的文档查看每个时机的参数
@Trainer.on(Event.on_before_backward())
def print_loss(trainer, outputs):
if trainer.global_forward_batches % 10 == 0: # 每10个batch打印一次loss。
print(outputs.loss.item())
trainer = Trainer(model=model, train_dataloader=dls['train'], optimizers=optimizer,
device=0, evaluate_dataloaders=dls['dev'], metrics={'acc': Accuracy()},
callbacks=callbacks, monitor='acc#acc',n_epochs=5,
# Accuracy的update()函数需要pred,target两个参数,它们实际对应的就是以下的field。
evaluate_input_mapping={'labels': 'target'}, # 在评测时,将dataloader中会输入到模型的labels重新命名为target
evaluate_output_mapping={'logits': 'pred'} # 在评测时,将model输出中的logits重新命名为pred
)
trainer.run()
# 在测试集合上进行评测
from fastNLP import Evaluator
evaluator = Evaluator(model=model, dataloaders=dls['test'], metrics={'acc': Accuracy()},
# Accuracy的update()函数需要pred,target两个参数,它们实际对应的就是以下的field。
output_mapping={'logits': 'pred'},
input_mapping={'labels': 'target'})
evaluator.run()
```
更多内容可以参考如下的链接
### 快速入门
- [0. 10 分钟快速上手 fastNLP torch](http://www.fastnlp.top/docs/fastNLP/master/tutorials/torch/fastnlp_torch_tutorial.html)
### 详细使用教程
- [1. Trainer 和 Evaluator 的基本使用](http://www.fastnlp.top/docs/fastNLP/master/tutorials/basic/fastnlp_tutorial_0.html)
- [2. DataSet 和 Vocabulary 的基本使用](http://www.fastnlp.top/docs/fastNLP/master/tutorials/basic/fastnlp_tutorial_1.html)
- [3. DataBundle 和 Tokenizer 的基本使用](http://www.fastnlp.top/docs/fastNLP/master/tutorials/basic/fastnlp_tutorial_2.html)
- [4. TorchDataloader 的内部结构和基本使用](http://www.fastnlp.top/docs/fastNLP/master/tutorials/basic/fastnlp_tutorial_3.html)
- [5. fastNLP 中的预定义模型](http://www.fastnlp.top/docs/fastNLP/master/tutorials/basic/fastnlp_tutorial_4.html)
- [6. Trainer 和 Evaluator 的深入介绍](http://www.fastnlp.top/docs/fastNLP/master/tutorials/basic/fastnlp_tutorial_4.html)
- [7. fastNLP 与 paddle 或 jittor 的结合](http://www.fastnlp.top/docs/fastNLP/master/tutorials/basic/fastnlp_tutorial_5.html)
- [8. 使用 Bert + fine-tuning 完成 SST-2 分类](http://www.fastnlp.top/docs/fastNLP/master/tutorials/basic/fastnlp_tutorial_e1.html)
- [9. 使用 Bert + prompt 完成 SST-2 分类](http://www.fastnlp.top/docs/fastNLP/master/tutorials/basic/fastnlp_tutorial_e2.html)
</details>
<details>
<summary>Paddle</summary>
下面是使用paddle来进行文本分类的例子。需要安装paddle>=2.2.0以及paddlenlp>=2.3.3。
```python
from fastNLP.io import ChnSentiCorpLoader
from functools import partial
# 会自动下载数据,并且可以通过文档看到返回的 dataset 应该是包含"raw_words"和"target"两个field的
data_bundle = ChnSentiCorpLoader().load()
# 使用tokenizer对数据进行tokenize
from paddlenlp.transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained('hfl/chinese-bert-wwm')
tokenize = partial(tokenizer, max_length=256) # 限制一下最大长度
data_bundle.apply_field_more(tokenize, field_name='raw_chars', num_proc=4) # 会新增"input_ids", "attention_mask"等field进入dataset中
data_bundle.apply_field(int, field_name='target', new_field_name='labels') # 将int函数应用到每个target上,并且放入新的labels field中
print(data_bundle.get_dataset('train')[:4])
# 初始化 model
from paddlenlp.transformers import BertForSequenceClassification, LinearDecayWithWarmup
from paddle import optimizer, nn
class SeqClsModel(nn.Layer):
def __init__(self, model_checkpoint, num_labels):
super(SeqClsModel, self).__init__()
self.num_labels = num_labels
self.bert = BertForSequenceClassification.from_pretrained(model_checkpoint)
def forward(self, input_ids, tok
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
fastNLP是一款轻量级的自然语言处理(NLP)工具包,目标是减少用户项目中的工程型代码,例如数据处理循环、训练循环、多卡运行等。 fastNLP具有如下的特性: 便捷。在数据处理中可以通过apply函数避免循环、使用多进程提速等;在训练循环阶段可以很方便定制操作。 高效。无需改动代码,实现fp16切换、多卡、ZeRO优化等。 兼容。fastNLP支持多种深度学习框架作为后端。 :warning: 为了实现对不同深度学习架构的兼容,fastNLP 1.0.0之后的版本重新设计了架构,因此与过去的fastNLP版本不完全兼容, 基于更早的fastNLP代码需要做一定的调整: fastNLP 开源的自然语言处理库 fastNLP.core 实现了核心功能,包括数据处理组件、训练器、测试器等 fastNLP.models 实现了一些完整的神经网络模型 fastNLP.modules 实现了用于搭建神经网络模型的诸多组件 fastNLP.embeddings 实现了将序列index转为向量序列的功能,包括读取预训练embedding等 fastNLP.io 实现了读写功能,包括数据读入
资源推荐
资源详情
资源评论
收起资源包目录
人工智能fastNLP,一款轻量级的自然语言处理(NLP)工具包 (819个子文件)
train.conll 738B
train.conll 336B
dev.conll 199B
test.conll 179B
dev.conll 163B
test.conll 116B
zh_sample.conllx 3KB
train.csv 9KB
dev.csv 7KB
dev.csv 7KB
dev.csv 7KB
dev.csv 6KB
test.csv 6KB
test.csv 5KB
test.csv 5KB
train.csv 5KB
train.csv 4KB
test.csv 4KB
train.csv 4KB
train.csv 3KB
test.csv 3KB
test.csv 3KB
dev.csv 3KB
train.csv 3KB
dev.csv 3KB
train.csv 2KB
test.csv 1KB
test.csv 1KB
test4dataset.csv 1KB
train.csv 908B
train.csv 665B
dev.csv 519B
test.csv 471B
cws_pku_utf_8 27KB
cws_test 11KB
cws_train 11KB
versions.html 802B
MANIFEST.in 88B
pytest.ini 157B
fastnlp_tutorial_4.ipynb 111KB
fastnlp_tutorial_4.ipynb 110KB
fastnlp_tutorial_paddle_e2.ipynb 96KB
fastnlp_tutorial_paddle_e2.ipynb 96KB
fastnlp_tutorial_6.ipynb 70KB
fastnlp_tutorial_6.ipynb 70KB
fastnlp_tutorial_5.ipynb 58KB
fastnlp_tutorial_paddle_e1.ipynb 57KB
fastnlp_tutorial_paddle_e1.ipynb 57KB
fastnlp_tutorial_e1.ipynb 54KB
fastnlp_tutorial_e1.ipynb 54KB
fastnlp_tutorial_5.ipynb 54KB
fastnlp_torch_tutorial.ipynb 53KB
fastnlp_tutorial_0.ipynb 53KB
fastnlp_tutorial_0.ipynb 53KB
fastnlp_tutorial_e2.ipynb 48KB
fastnlp_tutorial_e2.ipynb 48KB
fastnlp_tutorial_1.ipynb 45KB
fastnlp_tutorial_1.ipynb 45KB
fastnlp_tutorial_2.ipynb 35KB
fastnlp_tutorial_2.ipynb 35KB
fastnlp_tutorial_3.ipynb 26KB
fastnlp_tutorial_3.ipynb 26KB
transfer.ipynb 5KB
.Jenkinsfile 5KB
crf.json 13KB
train.json 10KB
dev.json 7KB
train.cnndm.jsonl 50KB
dev.label.jsonl 22KB
test.label.jsonl 14KB
snli_1.0_dev.jsonl 6KB
snli_1.0_test.jsonl 5KB
snli_1.0_train.jsonl 4KB
sample_snli.jsonl 2KB
LICENSE 11KB
Makefile 1KB
README.md 12KB
CODE_OF_CONDUCT.md 3KB
PULL_REQUEST_TEMPLATE.md 1KB
bug-report-bug--.md 986B
bug_report.md 799B
feature-request------.md 656B
feature_request.md 560B
custom-issue-template-------.md 132B
custom.md 91B
paddle-ernie-3.0-framework.png 197KB
paddle-ernie-3.0-framework.png 197KB
E1-fig-glue-benchmark.png 155KB
E1-fig-glue-benchmark.png 155KB
T1-fig-dataset-and-vocabulary.png 136KB
T1-fig-dataset-and-vocabulary.png 136KB
paddle-ernie-2.0-continual-pretrain.png 126KB
paddle-ernie-2.0-continual-pretrain.png 126KB
T0-fig-parameter-matching.png 93KB
T0-fig-parameter-matching.png 93KB
T0-fig-training-structure.png 78KB
T0-fig-training-structure.png 78KB
T0-fig-trainer-and-evaluator.png 70KB
T0-fig-trainer-and-evaluator.png 70KB
paddle-ernie-1.0-masking-levels.png 58KB
共 819 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
技术宅小伙
- 粉丝: 179
- 资源: 1777
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功