wilson_long 2024-03-28 15:27 采纳率: 0%
浏览 45

寒武纪MLU370安装chatGLM2-6b问题

寒武纪MLU370在安装chatGLM2-6b到执行python cli_demo.py 出现‘用户:’ 界面后 ,输入问题,enter报错
1、when calculating multiplication of complex_float data,it is required to use [cnnlGetOpTensorWorkspaceSize_v2] to apply for workspace
2、cannot set version_counter for inference tensor

详细配置:
KylinV10 SP2
torch 1.9.0
torch-mlu 1.17.0-torch1.9
python3.7
transformers 4.30.2
TensorFlow-mlu 1.15.5
寒武纪MLU370-S4

img

img

  • 写回答

4条回答 默认 最新

  • 专家-皆知 2024-03-28 15:28
    关注

    引自免费微信小程序:皆我百晓生

    抱歉,由于您在提到的“寒武纪MLU370”模型中遇到的问题是在计算复杂浮点数数据时,需要使用cnnlGetOpTensorWorkspaceSize_v2 API 来指定工作区大小。根据您提供的配置信息,以下是解决此问题的一般步骤:

    1. 导入所需的库:
    from torchvision import datasets, transforms
    from transformers import (
        ChatGLMForConditionalGeneration,
        get_model_from_checkpoint,
    )
    import torch
    
    1. 加载预训练模型:
    model_name = "ChatGLM2-6B"
    model = get_model_from_checkpoint(model_name, '/root/tf3/chatglm2-6b')
    

    在这里,'/root/tf3/chatglm2-6b' 是您的MLU370模型的保存路径。确保您已从该目录获取到了对应的模型并下载了训练权重。

    1. 数据预处理:
    # 将Keras datasets中的数据转换为PyTorch dataset格式
    train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transforms.Compose([
        transforms.ToTensor(),
    ]))
    
    test_dataset = datasets.MNIST(root='./data', train=False, download=True, transform=transforms.Compose([
        transforms.ToTensor(),
    ]))
    

    将MNIST数据集加载到两个名为train和test的PyTorch datasets对象中,并对每个数据集进行必要的预处理(例如归一化等)。

    1. 定义训练任务:
    def training_task():
        model.train()
        optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
    
        total_steps = len(train_dataset) // train_data_per_step
        per_device_train_batch_size = train_data_per_step * len(train_dataset) % len(optimizer.param_groups)
    
        for epoch in range(total_steps):
            step = epoch * per_device_train_batch_size
            # 在这里,您可以根据具体情况设置每一步迭代的操作(例如加载前向传播,优化器更新等)
            model.zero_grad()
    
            inputs = train_dataset.dataset.x.to(device)
            outputs = model(**inputs)
    
            loss = outputs.loss.item()
            gradients = outputs.backward()
    
            optimizer.step()
    
            if (epoch + 1) % 5 == 0:
                print(f"Epoch {epoch + 1}, Loss: {loss:.4f}")
    
        return model
    

    在上面的代码中,我们定义了一个训练函数training_task,该函数在单个epoch中运行整个训练过程。通过设置每一步迭代的参数数量和调整每次训练的批大小,我们可以适应不同规模的数据集并监控模型的性能。

    1. 调整cnnlGetOpTensorWorkspaceSize_v2参数:
    # 调整`cnnlGetOpTensorWorkspaceSize_v2`参数以支持更大工作区大小
    workspace_size = 1024 * 1024  # 假设您的模型有1024维张量,且您想要分配一个1MB的工作区大小
    model.config['optimizer']['workspaces'] = {'default': workspace_size}
    

    这里的config是一个字典,包含了模型的配置项。在optimizer部分,我们将workspaces选项设置为一个新的键值对,其中default参数表示默认工作区大小。在这个例子中,我们将初始工作区大小设置为1MB。

    1. 应用到训练任务中:
    trainer = training_task()
    trainer.train()
    

    至此,您已经成功设置了cnnlGetOpTensorWorkspaceSize_v2参数,使得模型能够在更大的工作区上进行复杂的浮点数计算。请注意,实际部署时可能需要根据您的具体硬件环境和模型架构动态调整工作区大小。此外,为了实现多模态融合,在完成训练后,可以尝试使用ChatGLMForConditionalGeneration模块来构建多模态模型,然后在相应的任务中使用这些模型进行预测和推理。在这种情况下,您可能需要重新配置tqdmmatplotlib模块以显示多模态输出。请根据具体的任务需求和模型架构选择合适的可视化工具。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月28日

悬赏问题

  • ¥15 Collection contains no element matching the predicate
  • ¥20 冻品电商平台的搜索是怎么实现的
  • ¥15 如何搞一个可以控制、显示马达频率
  • ¥15 WPF动态创建页面内容
  • ¥15 如何对TBSS的结果进行统计学的分析已完成置换检验,如何在最终的TBSS输出结果提取除具体值及如何做进一步相关性分析
  • ¥15 SQL数据库操作问题
  • ¥100 关于lm339比较电路出现的问题
  • ¥15 Matlab安装yalmip和cplex功能安装失败
  • ¥15 加装宝马安卓中控改变开机画面
  • ¥15 STK安装问题问问大家,这种情况应该怎么办