当前位置:   article > 正文

从零开始写ChatGLM大模型的微调代码_chatgml 微调

chatgml 微调

cursor 的下载及安装(免费版每月100次,升级pro 20刀/月)

cursor是一款与openai合作的,使用gpt-4的一款编程工具,它可以让你通过gpt-4进行辅助编程,以此提高效率。

下载地址:https://www.cursor.so/
cursor的使用

cursor的使用方式极其简易,只有两个快捷键,即ctrl+k\ctrl+l。
ctrl+k 表单形式使用

按快捷键:ctrl+k弹出输入框,输入你所需要写的代码要求及技术按回车即可。如下图。
在这里插入图片描述
程序将自己生成代码:
在这里插入图片描述
ctrl+l 对话框形式使用

按快捷键:ctrl+l弹出输入框,输入你想问的问题,或者内容即可获得相应的回复和对话框。
在这里插入图片描述
cursor可以做到的事

用了之后,发现真的很强大,可以写sql、html、js、算法、找bug等
代码续写、重写能力

ctrl+a + ctrl+k 告诉他帮你续写或者重写

微调大模型实现步骤(cursor生成)

 1. 加载预训练模型
 2. 冻结模型的所有参数
 3. 替换模型的最后一层为新的全连接层
 4. 解冻新的全连接层的参数
 5. 定义损失函数和优化器
 6. 训练新的全连接层
 7. 解冻模型的前几层
 8. 降低学习率
 9. 继续训练整个模型
 10. 保存微调后的模型
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

加载预训练模型

pretrained_model = models.resnet50(pretrained=True)
  • 1

冻结模型的所有参数

for param in pretrained_model.parameters():
    param.requires_grad = False
  • 1
  • 2

替换模型的最后一层为新的全连接层

pretrained_model.fc = nn.Linear(pretrained_model.fc.in_features, num_classes)
  • 1

解冻新的全连接层的参数

for param in pretrained_model.fc.parameters():
    param.requires_grad = True
  • 1
  • 2

定义损失函数和优化器

criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(pretrained_model.fc.parameters(), lr=0.001, momentum=0.9)
  • 1
  • 2

训练新的全连接层

for epoch in range(10):
    running_loss = 0.0
    for i, data in enumerate(trainloader, 0):
        inputs, labels = data
        optimizer.zero_grad()
        outputs = pretrained_model(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()
        running_loss += loss.item()
        if i % 2000 == 1999:
            print('[%d, %5d] loss: %.3f' %
                  (epoch + 1, i + 1, running_loss / 2000))
            running_loss = 0.0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

解冻模型的前几层

for param in pretrained_model.layer4.parameters():
    param.requires_grad = True
  • 1
  • 2

降低学习率

optimizer = optim.SGD(pretrained_model.parameters(), lr=0.0001, momentum=0.9)
  • 1

继续训练整个模型

for epoch in range(10):
    running_loss = 0.0
    for i, data in enumerate(trainloader, 0):
        inputs, labels = data
        optimizer.zero_grad()
        outputs = pretrained_model(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()
        running_loss += loss.item()
        if i % 2000 == 1999:
            print('[%d, %5d] loss: %.3f' %
                  (epoch + 1, i + 1, running_loss / 2000))
            running_loss = 0.0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

保存微调后的模型

torch.save(pretrained_model.state_dict(), 'fine_tuned_model.pth')
  • 1

详情参考:https://blog.csdn.net/KanShiMeKan/article/details/129651474

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/356642
推荐阅读
相关标签
  

闽ICP备14008679号