昇思25天学习打卡营第24天|MindNLP ChatGLM-6B StreamChat

1 环境配置

# 该案例在 mindnlp 0.3.1 版本完成适配,如果发现案例跑不通,可以指定mindnlp版本,执行`!pip install mindnlp==0.3.1`
!pip install mindnlp
!pip install mdtex2html

!export HF_ENDPOINT=https://hf-mirror.com

2 代码开发

from mindnlp.transformers import AutoModelForSeq2SeqLM, AutoTokenizer
import gradio as gr
import mdtex2html

model = AutoModelForSeq2SeqLM.from_pretrained('ZhipuAI/ChatGLM-6B', mirror="modelscope").half()
model.set_train(False)
tokenizer = AutoTokenizer.from_pretrained('ZhipuAI/ChatGLM-6B', mirror="modelscope")

prompt = '你好'
history = []
response, _ = model.chat(tokenizer, prompt, history=history, max_length=20)
response

打卡

### 使用MindNLP对RoBERTa-Large进行IA3微调的方法 为了实现这一目标,首先需要安装并配置好Ascend平台以及MindSpore环境。接着加载所需的库和模块来处理数据集、定义模型架构,并设置优化器和其他必要的组件。 #### 导入所需库 ```python import mindspore as ms from mindnlp.models import RobertaForSequenceClassification, RobertaConfig from mindnlp.transformers import IA3Config, get_ia3_model from mindnlp.datasets import load_dataset from mindspore.nn import AdamWeightDecay ``` #### 加载预训练的RoBERTa-large模型 通过指定路径或名称获取预训练权重文件,并初始化相应的配置对象。 ```python config = RobertaConfig.from_pretrained('roberta-large') model = RobertaForSequenceClassification(config) ``` #### 应用IA3适配层 创建IA3配置实例并将之应用于基础模型之上,从而引入额外参数用于后续调整。 ```python ia3_config = IA3Config(True) ia3_model = get_ia3_model(model, ia3_config) ``` #### 准备数据集 利用`mindnlp.datasets.load_dataset()`函数读取目标任务的数据源,这里假设使用GLUE benchmark中的MRPC子集作为例子。 ```python train_data = load_dataset('glue', 'mrpc', split='train') eval_data = load_dataset('glue', 'mrpc', split='validation') ``` #### 定义训练过程 编写自定义训练循环逻辑,在其中完成前向传播计算损失值反向更新梯度等一系列操作。 ```python optimizer = AdamWeightDecay(learning_rate=5e-5, params=model.trainable_params()) loss_fn = nn.CrossEntropyLoss() def forward_fn(input_ids, attention_mask, labels): logits = model(input_ids=input_ids, attention_mask=attention_mask)[0] loss = loss_fn(logits.view(-1, config.num_labels), labels.view(-1)) return loss grad_fn = ops.value_and_grad(forward_fn, None, optimizer.parameters) for epoch in range(num_epochs): for batch in train_loader: input_ids = batch['input_ids'] attention_mask = batch['attention_mask'] labels = batch['labels'] (loss), grads = grad_fn(input_ids, attention_mask, labels) optimizer.apply_gradients(zip(grads, model.trainable_params())) ``` 以上代码片段展示了如何基于MindNLP框架针对特定自然语言理解任务对RoBERTa-Large执行IA3微调的过程[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值