如图,我用的算力型号是autodl的NVIDIA L40 ,显示显存有45G,为什么还是显示显存不够?精度改成float16了,batch_size也设置为1,input output的maxlength也减少了,数据集大概有1800条数据。nvidia smi指令也显示没有别的进程占用显存。
求解,我使用的自有数据集,想试下单张显卡lora微调。怎么让模型跑起来?是参数不对还是数据集太大?还是什么原因…

如图,我用的算力型号是autodl的NVIDIA L40 ,显示显存有45G,为什么还是显示显存不够?精度改成float16了,batch_size也设置为1,input output的maxlength也减少了,数据集大概有1800条数据。nvidia smi指令也显示没有别的进程占用显存。
求解,我使用的自有数据集,想试下单张显卡lora微调。怎么让模型跑起来?是参数不对还是数据集太大?还是什么原因…

关注让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
如果答案让您满意,请采纳、关注,非常感谢!根据您描述的情况,可能存在以下一些原因导致显存不够,以及解决方法:
import torch
import torch.nn as nn
from torch.utils.data import DataLoader, Dataset
# 定义模型
class Model(nn.Module):
def __init__(self):
super(Model, self).__init__()
self.fc = nn.Linear(100, 10) # 例如输入维度为100,输出维度为10
def forward(self, x):
x = self.fc(x)
return x
# 定义数据集
class CustomDataset(Dataset):
def __init__(self, data):
self.data = data
def __len__(self):
return len(self.data)
def __getitem__(self, idx):
sample = self.data[idx]
return sample
# 参数设置
model = Model()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
criterion = nn.CrossEntropyLoss()
batch_size = 1
max_length = 100 # 输入输出的最大长度
data = [] # 自有数据集,由1800条样本组成
dataset = CustomDataset(data)
dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=True)
# 训练模型
for input_data in dataloader:
optimizer.zero_grad()
output = model(input_data)
loss = criterion(output, labels)
loss.backward()
optimizer.step()
您可以根据实际情况修改模型参数、数据集参数以及训练过程中的优化算法等,希望以上信息能够帮助到您解决问题。