RTX 4090禁售?不怕,有趋动云!——以LLaMa 2为例进行测试

近日,英伟达RTX 4090显卡在中国区禁售的消息闹得沸沸扬扬。因为在此之前,我不止一次地向朋友们安利过趋动云这家云计算厂商,所以最近有好多朋友来问:
“趋动云靠谱吗?”
“趋动云支持PyTorch吗?兼容性如何?”
“趋动云支持HuggingFace吗?兼容性如何?”
“趋动云跑神经网络网络的速度怎么样?会比nvidia同类显卡慢吗?”
“趋动云跑神经网络网络的性能怎么样?得到的模型准确率会比nvidia同类显卡低吗?”

这次,本文将尽可能详细地回答上述疑惑。

首先,我用趋动云10个月了,并且在硕士研究生阶段和毕业后担任算法工程师期间,实验室和公司的GPU服务器都是由我运维。现在可以负责任地说,趋动云很靠谱。这主要体现在省心、省时、省力。

其次,趋动云依托docker容器化技术,保证了上层应用的一致性和可用性。简单来说,趋动云完美支持PyTorch、Tensorflow、PaddlePaddle等主流深度学习框架;完美兼容HuggingFace的transformers等主流python程序库。从理论上看,趋动云提供的运行环境比我们本地GPU环境还要纯净。

第三,通过实践发现,基于趋动云搭建的PyTorch和huggingface环境在运行效果上,与本地GPU环境没有本质上的差别。具体体现在,运行速度没有太大差别,模型性能(比如P、R、F1)没有太大差别——可以放心使用。举例而言,我使用趋动云复现过ACL 2023的一篇论文,发现实验结果与论文公布结果几乎一致(会有不足1%的差异,但差异较小可以忽略不计)。

下面,以meta-llama/Llama-2-7b-hf为例,手把手带大家在趋动云上走一遍使用流程。总计4步。第1步,创建趋动云账号;第2步,创建趋动云镜像;第3步,创建趋动云项目;第4步,运行代码。

第1步,创建趋动云账号(https://platform.virtaicloud.com/)。

第2步,创建趋动云镜像(在屏幕左边找到“镜像”并点击)

在这里插入图片描述

在屏幕右上角,找到“制作镜像”并点击

在这里插入图片描述

在屏幕左边找到“添加镜像”并点击

在这里插入图片描述

依次点击图中红色箭头指向的按钮,最后选中右侧“PyTorch2.0.1-Conda3.9”镜像,作为基础镜像

在这里插入图片描述

编写dockerfile(这里我为大家准备好了一份用于构建llama 2运行环境的dockerfile,拿走不谢)

RUN python3 -m pip install --no-cache-dir \
  transformers==4.34.1 \
  sentencepiece==0.1.99 \
  accelerate==0.23.0 \
  sentence-transformers==2.2.2 \
  bitsandbytes \
  -i https://pypi.virtaicloud.com/repository/pypi/simple

在这里插入图片描述

点击右下角的构建

在这里插入图片描述

第3步,创建趋动云项目

在这里插入图片描述

点击“添加镜像”

在这里插入图片描述

在“我的”找到刚才创建好的镜像,并点击右下角的“确认”按钮

在这里插入图片描述

点击“添加绑定数据”

在这里插入图片描述

在弹出的页面中,首先点击“社区”,然后输入“llama-2-hf”,就只能找到我为大家下载好的llama 2模型checkpoint文件了(目前由7b和13b,后续可能会补充70b)。点击右下角“确认”按钮。

在这里插入图片描述

配置好的项目环境如下图所示,确认无误后点击右下角“创建”

在这里插入图片描述

在弹出的窗口中点击“暂不上传”

在这里插入图片描述

第4步,运行代码。上述步骤执行成功后,会来到如下图所示页面。这里点击“开发”按钮

在这里插入图片描述

然后,选择“初始化开发环境实例”

在这里插入图片描述

依次选择“B1.medium”作为底层GPU、选择“JupyterLab”作为开发工具,然后点击“确定”

在这里插入图片描述

上述步骤执行成功后,会弹出如下图所示提示

在这里插入图片描述

等待右侧开发者工具“JupyterLab”被点亮后,点击进入开发环境

在这里插入图片描述

成功进入“JupyterLab”,然后点击新建文件

在这里插入图片描述

点击新建“notebook”文件

在这里插入图片描述

将下列代码填入文本框,然后点击运行按钮

import torch
from transformers import LlamaTokenizer, LlamaForCausalLM

ckpt = '/gemini/data-1/meta-llama_Llama-2-7b-hf'

tokenizer = LlamaTokenizer.from_pretrained(
    pretrained_model_name_or_path=ckpt,
)
model = LlamaForCausalLM.from_pretrained(
    pretrained_model_name_or_path=ckpt,
    torch_dtype=torch.float16,
    device_map='auto',
)

prompt = 'Q: What is the largest animal?\nA:'
input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to('cuda')
generation_output = model.generate(
    input_ids=input_ids,
    max_new_tokens=32
)
print(tokenizer.decode(generation_output[0]))

在这里插入图片描述

因为llama-2-7b模型占用15GB磁盘空间,所以这里加载checkpoint文件的时间较长。等待5分钟后,我们如下图所示的得到了正确结果,成功演示!

在这里插入图片描述

可以看到,我们问llama-2模型“最大的动物是什么?”
模型回答:“地球上最大的动物是蓝鲸”
模型还自问自答:“最小的动物是什么?”,自答道“最小的动物是侏儒鼩”。

(以上)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值