成功使用8G 显存体验书生大模型 Demo

背景

最近在学习 InternLM (书生·浦语) 这个开源大模型的课程。
InternLM系列由 Shanghai AI Laboratory (上海人工智能实验室)研发,是一种以处理语言任务为核心的计算机程序,它能够与人类进行自然语言交互并完成一定意图的任务。

1 成功使用 Cli Demo 完成了 InternLM2-Chat-1.8B模型的部署

这是使用官网上自带的终端来部署模型的体验。这个用于快速熟悉流程和主要步骤是比较友好的方式。

前置

  • 知道官网:https://studio.intern-ai.org.cn/,并且具有账号,按照一定流程具有体验时间和资源等。
  • 创建开发机,并且配置好环相关的环境、安装依赖等。
  • 在创建好开发机之后,点击下图所示的位置,就可以在官网使用终端了:
    请添加图片描述

核心流程:

  • 首先在指定位置创建 cli_demo.py
  • 然后将示例代码粘贴。
  • 然后通过 python /root/demo/cli_demo.py 来启动Demo。

体验效果:

首先,我用中英文问了几个基本的问题,看起来效果还是不错的:
请添加图片描述

让它个我编个故事:

提示:
一只小黑猫和一只小花猫关系不好,但是突然一起经历了一件事情,从此关系变得非常好了。请基于此帮我编一个200~300字的故事。
请添加图片描述

大概就是这样吧。

成功使用 Streamlit Web Demo 部署 InternLM2-Chat-1.8B 模型

前置:

  • git clone 一下示例代码到本地,以便于后续执行。
  • 然后执行代码,就可以启动一个streamlit服务了。(需要注意的是,如果提示没有streamlit的话,可能需要再 pip install streamlit==1.37.0 一下)
- ```shell
streamlit run /root/demo/Tutorial/tools/streamlit_demo.py --server.address 127.0.0.1 --server.port 6006

核心流程:

前置做好之后:

1 很容易就可以看到官网的终端页面出现如下提示:

请添加图片描述

2 此时点击这个URL,浏览器会自动新打开一个页签,但是提示:【 嗯… 无法访问此页面】
3 没错,这时候还需要配置一下SSH密码:

在本地的 终端中输入命令,然后增加自己的端口号、密码,就可以完成配置啦。
- 值得注意的是,新手可能不习惯终端的情况(比如我,所以也记录一下)。终端输入密码的时候界面是不发生变化的,只要确认自己手摁过了ctrl V以后,回车就行了额,虽然界面没有变化,但是已经成功了的呢~
- 还有一点可能会有坑,就是windows 的话,可能会有两个版本的终端;建议使用windows图标右键出来的那个终端(黑色底的),会更好一些,因为这个可以支持键盘ctrl V的粘贴。
之前使用过通过命令{win +R }喊出来的 windows Powershell(藏蓝色底的),好像不能支持(不清楚其他小伙伴的情况,已备参考)。

4 现在就可以看到如下界面了:

请添加图片描述

### 使用SPU库在8GB显存的GPU上高效训练大规模机器学习模型 对于拥有较大规模的神经网络,在单张8GB显存的GPU上进行训练确实面临挑战。为了克服这一难题,采用模型并行的方式是一种有效的策略[^1]。 #### 模型分割与分布 通过将整个模型划分为多个子模块,并分配到不同的计算设备上来实现模型并行化处理。具体而言: - **评估模型结构**:分析待训练模型架构特点,识别可分离组件。 - **划分逻辑单元**:依据前向传播路径上的依赖关系合理切分网络层,形成若干相对独立的功能区块。 - **跨设备映射**:按照各硬件资源特性安排上述功能区块驻留位置;例如,某些卷积操作可能更适合部署于具备更强算力的核心节点之上。 ```python import torch.distributed as dist from spu import ModelParallelTrainer, DeviceManager device_manager = DeviceManager() devices = device_manager.get_devices() # 获取可用设备列表 trainer = ModelParallelTrainer(devices=devices) model_parts = [ model_part_1.to('cuda:0'), model_part_2.to('cuda:1') ] for part in model_parts: trainer.add_module(part) ``` #### 数据流管理 当实施模型并行方案时,还需关注数据传输效率问题。由于不同阶段间存在输入输出交互需求,因此要优化这些环节的数据交换机制以减少延迟开销。 - **流水线设计**:构建高效的Pipeline模式来组织前后端之间的协作流程,使得每一轮迭代过程中能够充分利用多台设备的同时工作能力而不至于造成瓶颈现象。 - **异步通信**:利用非阻塞式的API接口完成必要的参数同步动作,从而提高整体吞吐量表现。 ```python def forward_backward_pass(input_data): outputs = [] for i, module in enumerate(trainer.modules()): if i != 0: input_data = prev_output.detach().requires_grad_(True).to(module.device) output = module(input_data) outputs.append(output) prev_output = output loss = criterion(outputs[-1], target) loss.backward() return loss.item(), outputs ``` #### 资源配置调整 考虑到目标平台仅配备了一枚具有有限容量(即8GB)内存空间的图形处理器件,故而有必要针对此环境特征做出适当妥协或改进措施。 - **降低精度运算**:启用混合浮点数格式(Mixed Precision),允许部分权重更新过程采用较低位宽表达形式,以此节省存储占用率并加速矩阵乘法速度。 - **梯度累积技术**:每当遇到难以一次性加载全部样本集的情况之下,则可通过累加多次小批量反向传播所产生的梯度值再统一应用至参数修正之中去达成相同效果的目的。 ```python scaler = torch.cuda.amp.GradScaler() with torch.cuda.amp.autocast(): predictions = model(inputs) loss = loss_fn(predictions, labels) scaler.scale(loss).backward() if (batch_idx + 1) % accumulation_steps == 0: scaler.step(optimizer) scaler.update() optimizer.zero_grad() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值