Skip to content

Releases: PaddlePaddle/PaddleNLP

PaddleNLP v2.4.3

18 Nov 02:23
e002b0d
Compare
Choose a tag to compare

New Features

Prompt API

  • Template String 新增支持关键字 prefixoptions,新增 position, token_type, length, encoder, hidden_size 等7个属性 #3724
  • 新增支持 PrefixTemplate
  • 解除 InputExampleInputFeatures 对输入数据关键字的限制

问答

  • 新增无监督问答pipelines,pipeline运行示例和说明文档 #3605
  • 新增节点QAFilter、AnswerExtractor、QuestionGenerator、AnswerExtractorPreprocessor、QAFilterPostprocessor
  • 新增pipeline QAGenerationPipeline
  • FastAPI后端代码,承接ElasticSearch ANN检索库、QAGenerationPipeline和SemanticSearchPipeline
  • 无监督问答WEB可视化系统,功能如下:问答检索、在线问答对生成、在线更新索引库、文件上传并自动生成和载入问答对、问答对生成可选择过滤、问答检索可选择返回答案数量和最大检索数量

Trainer

  • 新增sharding支持,目前支持sharding stage1、stage2。 #3352
  • 新增bf16训练支持,可支持单卡、多卡训练。完善了pure_fp16训练支持。
  • 新增IterableDataset支持,支持传入Iterable的数据集。
  • 新增Seq2SeqTrainer,支持seq2seq任务训练。

FasterGeneration

  • 解除 Transformer FFN 中间隐层维度是 d_model 4 倍的限制,新增导入 model_state 方式加载模型 #3592

FastTokenizer

  • AutoTokenizer新增use_fast参数,指定使用fast_tokenizer完成高性能分词。目前ERNIE, BERT, TinyBert以及ERNIE-M可开启该选项。#3746
  • 发布高性能分词工具FastTokenizer 1.0.0 正式版,包含C++预编译包以及Python包 #3762

基础底座

  • UNIMO 新增支持获取中间输出选项和支持输入 label 并自动计算 loss #3450
  • CodeGen 新增支持获取中间输出选项和支持输入 label 并自动计算 loss #3465
  • UnifiedTransformer 新增支持获取中间输出选项和支持输入 label 并自动计算 loss #3459
  • BART 新增支持获取中间输出选项和支持输入 label 并自动计算 loss #3436
  • MBART 新增支持获取中间输出选项和支持输入 label 并自动计算 loss #3436
  • T5 支持直接输入 encoder & decoder embedding 结果 #3668
  • 新增paddlenlp cli工具 #3538
  • 添加 7 个 P1 级别模型的单测 #3462

UIE

  • 新增 UIE 量化训练和部署 #3496

Neural Search

  • 新增Gradicent Cache和Recompute支持单卡超大batch size的训练。 #3697

Text Classification

  • 新增语义索引的多标签文本分类。#3656
  • 新增单词和句子级别的可解释性分析 #3385
  • 修复文本分类部署相关问题 #3765
  • 基于 Trainer API 更新多分类实现 #3679

PPDiffusers

  • 将diffusers_paddle重命名为ppdiffusers。#3601
  • 修复bug支持中文Stable Diffusion, 发布ppdiffusers0.6.1。 #3663
  • 发布ppdiffusers0.6.2 #3737
  • 增加laion400m文生图训练脚本。#3693 #3772
  • 支持 EulerAncestralDiscreteScheduler 和 DPMSolverMultistepScheduler #3708 #3764
  • 增加fid计算代码。#3685
  • 增加ldm超分的pipeline。 #3710
  • 增加ppdiffusers推理pipeline使用代码。 #3759
  • 添加 ppdiffusers CD workflow #3604

Bug Fix

  • 修复 FasterEncoder 预测结果异常问题 #3606
  • 修复 FasterGeneration PrefixLM 类模型在 beam search 解码策略下显存分配问题 #3662
  • 修复Windows平台下载社区模型失败的问题 #3670 #3640
  • Pipelines修复文件重复上传的问题。#3568
  • Pipelines修复word文档解析异常的问题。#3645
  • PIpelines修复批量预测异常的问题。#3712
  • 修复问题生成模版相关的bug .#3646
  • TIPC中gpt动转静。#3586
  • 添加CLIPText,CLIPVision进入auto/modeling,支持AutoModel加载,修改CLIP的默认NEG INF为-1e4,这样fp16 O2不会异常。 #3789
  • 修复 pypi 自动化发包流程配置 #3626

PaddleNLP v2.4.2

27 Oct 13:39
16aa2ba
Compare
Choose a tag to compare

New Features

Text summarization应用

  • 增Pegasus中文文本摘要应用,支持Taskflow一键调用,支持FasterGeneration高性能推理,训练推理部署全流程打通。#3275

Question generation

  • 新增问题生成解决方案,提供基于UNIMO-Text和T5的通用问题生成预训练模型,支持Taskflow一键调用,支持FasterGeneration高性能推理,训练推理部署全流程打通。 #3410 #3438 #3560

Machine Translation

  • FasterMBart 支持动转静导出 #3367 #3356
  • MBart tokenizers 升级重构,支持最新 tokenizer 所有功能 #3323
  • 分离 MBartTokenizerMBart50TokenizerMBart50Tokenizer 支持 AutoTokenizerMBartTokenizerMBart50Tokenizer 支持自定义 sentence piece 参数 #3323

Pipelines

Taskflow

  • 优化Taskflow定制模型使用体验,增加模型参数文件的更新检查机制。 #3506

Bug Fix

  • 修复 MBart 限制模型本身翻译语言的问题 #3356
  • 修复 CodeGen 生成时未使用 token type ids 的问题 #3348
  • 修复 CodeGen 自适应生成 attention mask 错误 #3348
  • 修复 T5 在 use_cache=False 情况下解码出错问题 #3115
  • 修复文本摘要taskflow不能加载自定义模型的bug #3533
  • 修复问题生成预测时的bug #3524
  • 修改uie训练代码中utils.py文件中result变量未定义的问题 #3490
  • FAQ Finance修复Paddle Serving 在windows上的bug。#3491
  • 修复Pipelines解析docx文档,文本和图片出现在同一个paragraph的情况。 #3546
  • 修复语义索引的文本分类的数据说明。#3551

Others

  • 新增 T5 对 gated-silu 支持 #3115
  • 升级 T5Tokenizer 以支持 PaddleNLP 最新功能 #3115
  • 新增 T5 对 4D attention mask 支持 #3115
  • 新增 T5 支持以字典形式返回 #3370
  • FasterGeneration 支持 PaddlePaddle 2.4.0-rc0 及以上版本编译 #3545
  • UnifiedTransformer 支持自适应生成 position_idstoken_type_idsattention mask 等功能 #3177
  • UNIMO-Text 支持自适应生成 position_idstoken_type_idsattention mask 等功能 #3349

PaddleNLP v2.4.1

14 Oct 10:45
f43cfd0
Compare
Choose a tag to compare

New Features

ERNIE-Layout 文档智能大模型

  • 新增多语言跨模态文档预训练模型ERNIE-Layout,新增Benchmark及基于ERNIE-Layout的各类下游任务的微调及部署示例。#3183
  • 新增DocPrompt文档抽取问答模型,支持Taskflow一键调用。#3183

Pipelines 更新

  • 新增Docker cuda11.2镜像,并提供Docker编译教程。#3315
  • 新增Pipelines批量处理数据。 #3432
  • 新增一些用户反馈的FAQ和README文档的优化。 #3237
  • 新增Milvus 2.1的支持。#3283

Question Generation

  • 新增问题生成example,覆盖中文场景和英文场景。#3410
  • 新增问题生成taskflow。#3438

Compression API

  • 压缩 API 支持 ERNIE、ERNIE-M、BERT、TinyBERT、ELECTRA 等 NLU 模型。#3234 #3324
  • DynBERT 宽度自适应裁剪策略支持分布式训练。#3361

Prompt API

  • 新增 Prompt API 使用文档。#3362

Bug Fix

  • 修复了小样本文本分类中的失效链接以及在 windows 平台上推理时的数据类型问题。#3339 #3426
  • FAQ Finance 的Milvus升级为2.1版本,文档优化。#3267 #3430
  • 基于检索的文本分类代码简化和README优化。 #3322
  • Neural Search的文档优化。#3350
  • 修复了UIE的Dataloader在加载数据时可能导致内存溢出的问题。#3381
  • 修复DuEE序列标注代码导包错误。#2853
  • 修复Pillow warning问题。 #3404#3457
  • 更新artist模型的激活函数,修复dallebart中的warning,#3106
  • 修复Ernie tokenizer当中模型名称类型缺失的问题 #3423
  • 修复Bert单测中CI没检测到的Bug #3422
  • 修复动转静过程中对OrderedDict数据类型不支持的问题 #3364
  • 修复 bigru_crf 推理随机hang的问题。 #3418

Others

  • 添加Stable Diffusion的Licence #3210
  • 更新文档中微信群二维码。#3284
  • Processor和FeatureExtractor支持from_pretrained和save_pretrained #3453
  • 添加T5EncoderModel的单测 #3376
  • 添加9个模型的多输入输出和单测代码 #3305

PaddleNLP v2.4.0

06 Sep 11:19
9d9b00b
Compare
Choose a tag to compare

New Features

NLP Pipelines流水线工具

PaddleNLP Piplines旨在提升NLP模型上线效率,将NLP复杂系统的通用模块抽象封装为标准组件,支持快速组合复杂NLP系统应用

#3003 #3160 #3135 #3092 #3186

插拔式组件设计

  • 支持文档存储灵活节点配置,支持Faiss、Milvus高性能向量搜索引擎
  • 支持文档级别前处理节点配置,支持PDF、图片级别文档信息提取

飞桨SOTA模型快速串联

  • 支持飞桨中文SOTA预训练模型,ERNIE 3.0 系列轻量化快速集成到Pipelines中
  • 支持 RocketQA 语义索引模型,快速提升语义索引、FAQ系统效果

低门槛一键部署

  • RocketQA DuReader语义提取模型一键调用,通用场景无需进行语义模型训练
  • Docker和Docker-compose两种方式一键部署,减少环境安装成本

产业范例库升级

文本分类

文本分类全流程应用,支持预训练模型、小样本、语义索引方案,通过TrustAI来快速调优模型
#3087 #3184 #3104 #3180 #2956 #3011

文本分类方案全覆盖

  • 支持多分类、多标签、层次分类算法
  • 支持预训练微调、小样本Prompt tuning微调方式、以及语义索引分类方案
  • 底座模型支持ERNIE 3.0 全系列模型,适配不同的使用场景

高效模型调优

  • TrustAI模型可解释性工具,快速定位稀疏数据、脏数据问题,进一步提升模型效果
  • 接入数据增强工具,多种数据增强方法,可快速对稀疏数据进行增强

产业级全流程方案

  • 支持数据标注、模型训练、模型压缩、模型预测部署全流程

信息抽取

  • 新增多语言模型UIE-M-Base和UIE-M-Large,支持中英文混合抽取及Taskflow一键调用。#3192
  • 新增基于封闭域模型GlobalPointer的UIE数据蒸馏方案,支持Taskflow一键部署。#3136

语义索引

  • 新增RocketQA的CrossEncoder模型,并支持加载到pipelines中。#3196
  • Neural Search的召回模型换成 基于ERNIE3.0的RocketQA模型,并支持加载到Pipelines中。 #3172

AIGC内容生成

CodeGen代码生成

PaddleNLP 2.4版本发布CodeGen代码生成全系列SOTA模型,可快速一键调用代码生成模型
#2641 #2754 #3017

效果领先

  • 集成代码生成SOTA模型CodeGen
  • 集成12个CodeGen不同规模的代码生成模型,支持多编程语言代码生成模型

简单易用

  • 支持通过Github Copilot调用模型,同时支持Taskflow一键调用模型
  • 支持FasterGeneration打造高性能推理,毫秒级响应

文图生成

文图生成目前是AIGC一个重要方向,PaddleNLP 2.4发布众多有趣的文图生成模型,可一键调用模型快速趣玩文图生成模型

#2917 #2968 #2988 #3040 #3072 #3118 #3198

超多潮流文图生成

  • 支持 DALL-E-mini 、CLIP + Disco Diffusion 、CLIP + Stable Diffusion、ERNIE-ViL +Disco Diffusion等模型

简单易用

  • 支持Taskflow一键调用图文生成模型
  • 支持FasterGeneration打造高性能推理,打破图文生成性能瓶颈

文本摘要

文本摘要是目前NLP场景中高频场景,此次发版新增中文文本应用,支持文本摘要定制化训练 #2971

  • 新增文本摘要Application,支持定制化训练,打通高性能推理部署,支持Taskflow一键调用

框架升级

模型自动压缩Compression API

  • 新增 模型压缩 API,支持基于 PaddleSlim 的裁剪和静态离线量化功能,快速加速文本分类、语义匹配、序列标注、阅读理解任务 #2777
  • 模型压缩API可以快速调用模型裁减、模型量化功能,大幅降低模型压缩使用成本

小样本学习 Prompt API

  • 新增Prompt Learning训练框架,支持PET、P-Tuning、RGL等经典模型的快速实现 #2894
  • 文本分类场景中使用Prompt Learning训练框架快速提升小样本训练效果 #2894

Transformers 预训练模型

基础 API

  • BERT、ERNIE、RoBERT 等模型接口新增获取 attention score 和所有中间层输出功能,可以轻松使用满足蒸馏等需求 #2665
  • BERT、ERNIE、RoBERT 等模型接口新增对 past_key_values 输入支持,通过该输入可以进行 prefix-tuning #2801
  • BERT、ERNIE、RoBERT 等模型接口新增输入 label 返回 loss 支持,简化使用方式,无需再拆分label和额外定义损失函数 #3013
  • BERT、ERNIE、RoBERT 等模型接口支持输出支持以 dict 形式返回,可以用更清晰的方式从返回内容中获取需要的输出内容 #2665
  • 系统批量完善预训练模型接口单测,保障功能稳定性

模型权重

  • 新增XLM模型 #2080
  • 转换Langboat/mengzi-t5-base-mt权重,并新增Zero Shot使用样例 #3116
  • 新增Roformer-sim,支持复述生成,可以生成相似句做数据增强 #3049

Bug Fix

  • 批量新增模型model_max_input_size配置字段 #3127
  • 修复 FasterGeneration 部分模型Sampling解码出core的问题。#2561
  • 修复 UNIMOText 在不使用加速特性情况下生成出错问题 #2877
  • 修复 FasterGeneration 在基于采样解码策略下性能不稳定的问题 #2910
  • 修复 BART tokenizer 获取 bos_token_id 出错问题 #3058
  • 修复 BART tokenizer 无法设置 model_max_length 问题 #3018
  • 修复 Taskflow的文本相似度在Windows上dtype引起的预测失败问题 #3188

Others

  • 支持FasterGPT的word_embeddings 和 lm_head.decoder_weight的权重不共享 #2953
  • 重构RoFormer,新增RoFormerForCausalLM类,支持roformer-sim相似句生成 #3049
  • 更新ERNIE模型,当type_vocab_size=0时,表示不使用token_type_id #3075
  • 新增ERNIE-Tiny模型的benchmark #3100
  • 更新BERT预训练时混合精度的配置,AMP level改为O2 #3080
  • FasterBART支持动转静和高性能推理。#2519
  • FasterGeneration 预测库联编支持 ONNX 依赖引入 #3158
  • Generation API 支持 logits_processorget_decoder_start_token_id() #3018
  • BART 模型支持 get_input_embeddings()set_input_embeddings() 方法获取 embeddings #3133
  • GPT 模型支持 get_vocab()、 0/1 attention mask、add bos token 等新增接口功能 #2463

New Contributors

New Contributors

Full Changelog: v2.3.0...v2.4.0

PaddleNLP v2.3.6

24 Aug 08:45
98eab22
Compare
Choose a tag to compare

New Features

  • 新增基于ERNIE 3.0的RocketQA召回模型,包含rocketqa-zh-base(12-layer, 768-hidden)、rocketqa-zh-medium(6-layer, 768-hidden)、rocketqa-zh-mini(6-layer, 384-hidden),rocketqa-zh-micro(4-layer, 384-hidden)和rocketqa-zh-nano(4-layer, 312-hidden)5个语义检索召回模型,在Dureader Retrieval数据集上达到中文最佳效果。 #3033
  • 新增基于ERNIE 3.0的RocketQA排序模型。 包含rocketqa-base(12-layer, 768-hidden)、 rocketqa-medium(6-layer, 768-hidden)、rocketqa-mini(6-layer, 384-hidden)、rocketqa-micro(4-layer, 384-hidden)和rocketqa-nano(4-layer, 312-hidden)5个语义检索排序模型,在Dureader Retrieval数据集上达到中文最佳效果。 #3019
  • 新增VI-LayoutXLM文档多模态模型,推理速度与精度超越LayoutXLM。#2935
  • NLP流水线系统Pipelines新增RocketQA轻量化模型,端到端响应速度显著提升。 #3078

Unit Test

  • 新增Ernie-Gram模型单测 #3059
  • 新增TinyBert模型单测 #2992
  • 新增Roformer模型单测 #2991
  • 新增ERNIE-M模型单测 #2964
  • 新增Skep模型单测 #2941
  • 新增Electra和XLNet模型单测 #3031
  • 新增RoBERTa、ALBERT 和 ERNIE模型的单测 #2972

Bug Fix

  • 修复BART tokenizer获取 bos_token_id 出错问题 #3058
  • 修复BART tokenizer无法设置 model_max_length 问题 #3018
  • 修复Pipelines的随机问题生成按钮报错问题和搜索问题回退到上一个搜索结果的问题。 #2954
  • 修复Pipelines在Python3.7上利用FAISS抽向量引起的问题。 #2965
  • 修复Tokenizer resize-token-embeddings 错误 #2763
  • 修复OPT示例代码 #3064
  • pointer_summarizer支持xpu和多卡 #2963 #3004

New Contributors

Full Changelog: v2.3.5...v2.3.7

PaddleNLP v2.3.5

01 Aug 13:02
86a373e
Compare
Choose a tag to compare

New Features

代码生成

  • CodeGen支持Taskflow一键调用。 #2754
  • 增加CodeGen使用文档。#2791

UIE

  • 新增UIE英文版本,支持Taskflow一键调用。 #2855

Neural Search

  • 新增排序模型的C++和pipeline的部署。 #2721
  • 新增in-batch negatives边训练边评估的功能。 #2663

小样本学习

  • 新增小样本模型RGL的实现。#2651

文本分类

  • 新增多分类、多标签application。#2661 #2675
  • 数据增强策略 #2805

文本匹配

  • 新增无监督语义向量模型DiffCSE。 #2643

Bug Fix

  • 修复pipelines未传入max_seq_len的问题。#2736
  • 修复pipelines的faiss-cpu依赖,新增乱码处理的FAQ。 #2709
  • 修复neural search的预测时dropout引起的结果不一致的错误,新增对ANN索引的FAQ。#2710
  • 修复ERNIE tokenizer的 get_offset_mapping 错误。#2857 #2897
  • 修复 model 中间 output 输出导致的 UNIMOText 原生生成失败问题。 #2877

其他

New Contributors

Full Changelog: v2.3.4...v2.3.5

PaddleNLP v2.3.4

28 Jun 11:22
2710b7d
Compare
Choose a tag to compare

New Features

Taskflow

  • 新增三个UIE小模型:UIE-Mini(6-layer, 384-hidden)、UIE-Micro(4-layer, 384-hidden)、UIE-Nano(4-layer, 312-hidden)。#2604
  • 新增基于中文词类知识的信息抽取工具WordTag-IE。 #2540

更多预训练模型

  • 开源 ERNIE Tiny 预训练模型,效果、精度领先于HFL、UER、Huawei-Noah 同等规模下开源中文模型。
  • 新增CodeGen代码生成模型。#2641

基础体验优化

  • Trainer 支持 constant、cosine、linear三种学习率调度策略。 #2511
  • FasterBART支持动转静和推理。#2519
  • FasterGeneration 支持使用带有 onnx 的预测库的编译。#2463

CLUE Benchmark

  • 支持 CLUE 10 个任务的训练、评估、预测,支持用户产出预测结果提交至 CLUE 榜单,并提供 Grid Search 工具供用户一键训练,最终获取最优评估结果。

文本分类

  • 新增多标签层次分类。 #2501
  • ERNIE-DOC模型在分类任务上添加预测部署流程。#1845

生态模型

  • 新增XLM模型。#2080

Bug Fix

  • 修复UIE同类别嵌套的评估问题。 #2558
  • 修复UIE prompt为英文时,prompt与文本的offset重叠的问题。#2453
  • 修复BERT Tokenizer调用get_offset_mapping出错的问题。 #2508
  • 修复FasterGeneration部分模型Sampling解码出core的问题。#2561
  • 修复PretrainedTokenizer和PretrainedModel 中from_pretrained中的潜在问题。 #2521 #2578 #2424
  • 修复LukeTokenizer当中的字段缺失导致保存时报错的问题。 #2631
  • 修复ChineseBertTokenizer由于Tokenizer机制更新导致expect parameter的问题。 #2625
  • 修复 PretrainedTokenizer special token 设置被覆盖及遗漏的问题 #2534 #2629
  • 修复 albert pad token id 缺失问题 #2495
  • 修复 ERNIE-1.0 预训练使用amp 02时,加载checkpoint错误问题 #2479
  • 移除RandomGenerator的is_init_py属性 #2658

其他

  • BERT 支持 fused_ffn、fused_attention进行fuse #2523

Full Changelog: v2.3.3...v2.3.4

PaddleNLP v2.3.3

07 Jun 10:52
Compare
Choose a tag to compare

Bug Fix

  • 修复 AutoModel 模型选择 bug 导致从本地目录加载 ernie-1.0 等模型失败的问题 #2426
  • 修复 tokenizer 从本地目录加载时由于文件检查 bug 导致失败的问题 #2424
  • 修复 Taskflow 依存分析输出的类型问题 #2422
  • 修复 UIE 中 doccano 标注数据转换脚本的 split 检查问题;并完善 Task 使用 ONNX 预测的报错方式 #2417
  • 修复代码中的 data 拼写问题 #2410
  • 修复 PaddleNLP/README 中的 UIE 链接 #2419

Full Changelog: v2.3.2...v2.3.3

PaddleNLP v2.3.2

02 Jun 13:34
7d1d6fe
Compare
Choose a tag to compare

New Features

更快的推理部署

  • UIE 推理加速:支持 UIE 模型 CPU、GPU 设备上高性能推理能力,显著提升 UIE 推理速度。
  • ERNIE 3.0 模型支持 Triton Inference Server服务化部署。

更多预训练模型

基础体验优化

  • ERNIE-M 模型支持多项选择式阅读理解任务。
  • 新增支持 XLNet 模型动转静能力。
  • BART Tokenizer 兼容性优化。

生态模型

  • 新增 GAU-alpha 生态模型。

Bug Fix

  • 修复 ElectraTokenizer 缺失 do_lower_case 属性问题。#2263
  • 修复 CLUE Benchmark 评估 CHID 任务日志 Bug。#2298
  • 修复语义检索 Application、FAQ System 在 Windows 系统数据类型报错问题。#2381
  • 修复基于 AutoTokenizer 加载 ERNIE 模型报错问题。#2315
  • 修复 load_dataset 函数报 dict_keys 错误问题。#2364
  • 修复文本生成 example Windows 平台数据类型报错问题。#2351
  • 修复 ERNIE 3.0 ONNX Runtime 推理 Bug。#2386
  • 修复 DDParser 针对 1-D Array 的 Padding 问题。#2333

New Contributors

Full Changelog: v2.3.1...v2.3.2

PaddleNLP v2.3.1

19 May 11:56
6716b91
Compare
Choose a tag to compare

Improvements

  • GPT-3支持静态图混合并行情况下的生成推理。 #2188 #2245

BugFix

  • 新增基于 FAISS ANN 引擎一键运行语义检索系统示例。#2180
  • 修复 PaddleNLP 智能文本产线示例 CPU 运行报错问题。#2201
  • 修复 GPT 编译报错问题。#2191
  • 修复 GPT 预训练数据流未传入 max_seq_len 参数问题。#2192
  • 修复 GPT-3 静态图混合并行,预训练报错问题。#2190 #2223 #2195
  • 修复 tokenizer 非兼容升级导致 NPTag 解码错误问题。#2199
  • 修复Taskflow UIE Schema 重复构建的问题。#2170
  • 兼容 NER 标注任务 doccano 多种导出格式的数据转换。#2187
  • 修复 NPTag 解码问题。#2233
  • 修复 DuUIE max_seq_len 报错问题。#2207
  • 修复 Windows 系统默认编码非 UTF8 时的编码报错问题。#2209
  • 修复 AlbertForQuestionAnswering import 报错问题。#2216
  • 修复 CLUE Benchmark 预测结果格式问题。#2215
  • 修复死链问题。#2231 #2230 #2235 #2240 #2241

New Contributors

Full Changelog: v2.3.0...v2.3.1