微调大模型(pytorch)

一.准备工作

配置

微调大模型首先要一个很好的显卡 可以去AutoDLhttps://www.autodl.com/login去租一个4090

连接主机

个人喜欢用vscode去连接

下载ssh扩展

然后ctrl+shift+p输入ssh连接(主机开机后会有ssh连接 复制就行了)

输入密码 等待连接

 在github里下载想要调试的大模型

搜索模型名称然后复制链接就行

在vscode终端输入

git clone

加链接

把文件下载到主机的文件里(一般在/root/下以模型名命名的文件)

然后再运行里面的python文件,一般是cli_demo.py(这里可能要下一次python扩展 下载一下就行)

然后看报错 看哪些库没有 pip install 库名下载一下

最后运行

这个运行大概率会报错

下载另一个预训练模型

https://www.modelscope.cn/models?name=GLM-4&page=1

在魔塔社区下载要用的模型,搜索一下,然后找到要用的模型(最好5-9B)

然后

点击下载模型;建议使用sdk下载复制里面的py代码

在vscode里新建一个python文件然后运行(注意要先保存后运行)

下载过后,此文件应该在/root/.modelscope里,复制新模型的地址,在cli_demo.py的path路径替换并运行。

到这里,已经完成了对基础大模型的训练

二。微调大模型

首先,需要

git clone https://github.com/hiyouga/LLaMA-Factory

下载LLaMa

下载之后,打开这个文件

cd LLaMA-Factory/,运行

pip install -r requirements.txt

这个文件里有好多库,下载一下。

之后打开src,运行webui.py,这是前端页面文件。

运行结果是这样的

再打开code,打开data,dataset.info.json文件

复制第一行,然后把identity改了,file_name改为自己的json文件(要把自己的json文件导入data文件夹下,复制粘贴就行),json文件的格式什么的网上都有,这里不赘述。

之后需要填型号名称,模型路径就是在vscode里的modelscope的预训练模型的路径。

数据集填改了的id,其他的不用管,然后把下面的4个选项一次点一遍。

这里会报错:

在终端输入

运行就好。

等微调之后,点入聊天页面,填入检查点路径,荷载模型就完成了

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用以下代码来微调resnet模型在mnist数据集上: ```python import torch import torch.nn as nn import torch.optim as optim import torchvision import torchvision.transforms as transforms from torchvision.models import resnet18 # Load MNIST dataset transform = transforms.Compose( [transforms.Resize((224, 224)), transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))]) trainset = torchvision.datasets.MNIST(root='./data', train=True, download=True, transform=transform) trainloader = torch.utils.data.DataLoader(trainset, batch_size=32, shuffle=True, num_workers=2) testset = torchvision.datasets.MNIST(root='./data', train=False, download=True, transform=transform) testloader = torch.utils.data.DataLoader(testset, batch_size=32, shuffle=False, num_workers=2) # Define resnet model model = resnet18(pretrained=True) num_ftrs = model.fc.in_features model.fc = nn.Linear(num_ftrs, 10) # Define loss function and optimizer criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9) # Train the model for epoch in range(10): running_loss = 0.0 for i, data in enumerate(trainloader, 0): inputs, labels = data optimizer.zero_grad() outputs = model(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step() running_loss += loss.item() if i % 100 == 99: print('[%d, %5d] loss: %.3f' % (epoch + 1, i + 1, running_loss / 100)) running_loss = 0.0 print('Finished Training') # Test the model correct = 0 total = 0 with torch.no_grad(): for data in testloader: images, labels = data outputs = model(images) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item() print('Accuracy of the network on the 10000 test images: %d %%' % ( 100 * correct / total)) ``` 这段代码会加载resnet18模型,并在MNIST数据集上微调它。我们首先将MNIST图像的大小调整为224x224,然后将其输入到resnet模型中。我们还将resnet的最后一层替换为一个具有10个输出的全连接层,以便我们可以对MNIST数据集进行分类。我们使用交叉熵损失函数和随机梯度下降优化器来训练模型。在训练完成后,我们使用测试集来评估模型的准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值