支持多平台,无需GPU!仅需8G内存即可部署运行大模型

随着ai技术不断发展,一直想本地运行一个大模型玩玩,奈何GPU价格不低......
最近找到一款只需要8G内存即可运行的大模型,速度还挺快,特别分享出来。

本地安装前提

内存 8G+

安装运行简要概述

  • 首先运行服务端
  • 然后运出客户端即可本地使用大模型。(首次使用下载模型文件需要一点时间)

多端&多种安装方式简述

源码地址文末(PS:为了阅读量的码字人)

macOS下载地址: https://ollama.com/download/Ollama-darwin.zip
# 解压之后,点击软件,一路确定下去即可运行。【服务端】

# 然后 打开控制台执行 【客户端】即可
ollama run llama2
Windows下载地址: https://ollama.com/download/OllamaSetup.exe
# 解压之后,点击软件,一路确定下去即可运行。【服务端】

# 然后 打开控制台执行 【客户端】即可
# 身边暂时没有windows 请自行摸索
Linux
curl -fsSL https://ollama.com/install.sh | sh
# 解压之后,点击软件,一路确定下去即可运行。【服务端】

# 然后 打开控制台执行 【客户端】即可
ollama run llama2

本地源码安装方式(以mac 为例)

brew install cmake go

git clone https://github.com/ollama/ollama.git

cd ollama

go generate ./...

go build .

# 运行server端
./ollama serv

# 在ide新开一个控制台,运行client端。 
# 下载模型需要一点时间。 更换模型可以在支持列表选择模型名称
./ollama run llama2
docker 方式

https://hub.docker.com/r/ollama/ollama

# CPU only【服务端】
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

# 运行【客户端】下载模型需要一点时间
docker exec -it ollama ollama run llama2
控制台运行截图

本地api

需要安装 mistral 模型

curl http://localhost:11434/api/chat -d '{
  "model": "mistral",
  "messages": [
    { "role": "user", "content": "why is the sky blue?" }
  ]
}'

部署可视化交互界面 open-webui

https://github.com/open-webui/open-webui

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

用浏览器打开http://localhost:3000,注册登录open-webui账号登录,选择本地模型 即可

更多的模型

LLaVA 专门识别图片的模型,Code Llama 写代码的等多种模型,好奇的你可以进一步去探索

github 地址

GitHub - ollama/ollama: Get up and running with Llama 2, Mistral, Gemma, and other large language models.

原文地址: 支持多平台,无需GPU!仅需8G内存即可部署运行大模型 - mylomen

微信公众号 : mylomen

### 使用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、付费专栏及课程。

余额充值