前置条件

1.python环境,安装教程:https://www.python.org/downloads/
2.wsl环境(Windows系统),安装教程:https://learn.microsoft.com/zh-cn/windows/wsl/install

第一步下载大模型

模型仓库:https://huggingface.co/collections/deepseek-ai/deepseek-r1-678e1e131c0169c0bc89728d

第二步配置环境

1.安装cuda

https://www.cnblogs.com/zijie1024/articles/18375637

2.安装pytorch

使用命令nvidia-smi,查看cuda版本
在官网选择对应版本下载
官网:https://pytorch.org/get-started/locally/

得到命令:pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu12
如果pip3安装失败就改为pip

3.安装依赖包

pip install bitsandbytes
pip install transformers
pip install accelerate

如果提示:ModuleNotFoundError: No module named 'torch'
执行:pip install --upgrade pip setuptools wheel

第三步运行

1.直接运行

try:
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
except ImportError as e:
print(f"导入库时发生错误: {e},请确保 transformers 和 torch 库已正确安装。")
else:
try:
# 模型和分词器的本地路径
model_path = "."
# 加载分词器
tokenizer = AutoTokenizer.from_pretrained(model_path) # 加载模型
model = AutoModelForCausalLM.from_pretrained(model_path) # 检查是否可以使用 GPU 并设置设备
device = "cuda" if torch.cuda.is_available() else "cpu"
if device == "cuda":
print("Using GPU for inference.")
else:
print("Using CPU for inference.")
model.to(device) # 示例输入
input_text = "你是哪个模型?"
inputs = tokenizer(input_text, return_tensors="pt").to(device) # 模型推理
with torch.no_grad(): # 禁用梯度计算,减少内存占用
outputs = model.generate(**inputs, max_length=2000, num_return_sequences=1,
no_repeat_ngram_size=2, temperature=1.0, top_k=50, top_p=0.95) generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
print("Generated text:", generated_text) except FileNotFoundError:
print(f"模型文件未找到,请检查路径: {model_path}")
except Exception as e:
print(f"发生错误: {e}")
finally:
# 如果是在 GPU 上运行,尝试清理缓存
if device == "cuda":
torch.cuda.empty_cache()

2.量化后运行

from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
import torch # 模型路径
model_name = "."
quantized_model_dir = "deepseek-1.5b-quantized" # 配置量化参数
quantization_config = BitsAndBytesConfig(
load_in_4bit=True, # 使用 4 位量化
bnb_4bit_compute_dtype=torch.float16, # 计算精度
bnb_4bit_use_double_quant=True, # 使用双量化
llm_int8_enable_fp32_cpu_offload=True # 启用 CPU 卸载
) # 加载模型和分词器
model = AutoModelForCausalLM.from_pretrained(
model_name,
quantization_config=quantization_config,
device_map="auto",
trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(model_name) # 保存量化后的模型
model.save_pretrained(quantized_model_dir)
tokenizer.save_pretrained(quantized_model_dir) print(f"Quantized model saved to: {quantized_model_dir}") # 执行运行模型的py,也可以手动运行,注意修改模型路径为量化后的模型路径
with open("run.py", "r") as file:
script_content = file.read() exec(script_content)

运行效果

源码方式本地化部署deepseek和量化的更多相关文章

  1. Spark1.0.0 源码编译和部署包生成

    问题导读:1.如何对Spark1.0.0源码编译?2.如何生成Spark1.0的部署包?3.如何获取包资源? Spark1.0.0的源码编译和部署包生成,其本质只有两种:Maven和SBT,只不过针对 ...

  2. 使用yum源的方式单机部署MySQL8.0.13

    使用yum源的方式单机部署MySQL8.0.13 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 基本上开源的软件都支持三种安装方式,即rmp方式安装,源码安装和二进制方式安装.在 ...

  3. 第6章 RTX 操作系统源码方式移植

    以下内容转载自安富莱电子: http://forum.armfly.com/forum.php 本章教程为大家将介绍 RTX 操作系统源码方式移植,移植工作比较简单,只需要用户添加需要的源码文件即可, ...

  4. centos7下源码方式安装gitlab8.9+发送邮件+ldap

    CentOS7下源码方式安装gitlab 环境描述 操作系统: centos7 redis: >=2.8 mysql >=5.5.14 git >=2.7.4 架构设计 一台gitl ...

  5. 源码方式安装 lrzsz 库

    我们都知道安装了lrzsz工具的linux系统环境: 在shell里可以非常方便的上传和下载linux里面的文件: 通常的安装方式: yum install lrzsz sudo apt-get in ...

  6. win10下通过编译源码方式在chrome中成功安装react-devtools开发工具插件

    win10下通过编译源码方式在chrome中成功安装react-devtools开发工具插件   1.去git上下载react-devtools文件到本地,https://github.com/fac ...

  7. 01.LNMP架构-Nginx源码包编译部署详细步骤

    操作系统:CentOS_Server_7.5_x64_1804.iso 部署组件:Pcre+Zlib+Openssl+Nginx 操作步骤: 一.创建目录 [root@localhost ~]# mk ...

  8. 02.LNMP架构-MySQL源码包编译部署详细步骤

    操作系统:CentOS_Server_7.5_x64_1804.iso 部署组件:Cmake+Boost+MySQL 操作步骤: 一.安装依赖组件 [root@localhost ~]# yum -y ...

  9. 源码方式安装 lrzsz库

    源码方式安装 lrzsz库:https://www.cnblogs.com/cocoajin/p/11731787.html 我们都知道安装了lrzsz工具的linux系统环境,在shell里可以非常 ...

  10. Linux上生产环境源码方式安装配置postgresql12

    1.Linux上源码方式安装postgresql12 01.准备操作系统环境 echo "192.168.1.61 tsepg61" >> /etc/hosts mou ...

随机推荐

  1. Linux C/C++编程之静态库

    [图书推荐]<Linux C与C++一线开发实践(第2版)>_linux c与c++一线开发实践pdf-CSDN博客 <Linux C与C++一线开发实践(第2版)(Linux技术丛 ...

  2. RocketMQ系列2:领域模型和技术概念

    ★消息队列16篇 1 领域模型 Apache RocketMQ 是一款典型的分布式架构下的消息中间件产品,使用异步通信方式和发布订阅的消息传输模型. Apache RocketMQ 产品具备异步通信的 ...

  3. python雪花算法

    雪花算法(Snowflake Algorithm)是一种用于生成唯一的ID的算法,它由Twitter开发.其生成的ID在全局范围内是唯一的,适合高并发场景.雪花算法生成的ID通常是一个64位的整数,包 ...

  4. 基于 .NET 的 Nuget 发版工具

    背景 由于 Natasha 及周边项目发版任务多,文件结构也不简单,之前一直使用基于 Github 管道脚本和 XUnit 来发版.这个方案对于发版环境与条件依赖性较强,且不够灵活,因此萌生出做一个本 ...

  5. 12C++循环结构-for循环(2)

    一.循环变量为字符型 试编一程序,按字典顺序输出26个字母. 流程图: 程序代码如下: #include <iostream> //包含输入输出流头文件iostream using nam ...

  6. 小程序,用户授权手机号,node需要检验和解析

    1. 第一步需要先在小程序api文档中下载对应语言的解密算法,解压之后就可以看到 https://developers.weixin.qq.com/miniprogram/dev/framework/ ...

  7. Qt编写本地摄像头综合应用示例(qcamera/ffmpeg/v4l2等)

    一.功能特点 同时支持 qcamera.ffmpeg.v4l2 三种内核解析本地摄像头. 提供函数 findCamera 自动搜索环境中的所有本地摄像头设备,搜索结果信号发出. 支持自动搜索和指定设备 ...

  8. spark (五) RDD的创建 & 分区

    目录 1. RDD的创建方式 1.1 从内存创建RDD 1.2 从外部存储(文件)创建RDD 1.3 从其他的RDD创建 1.4 直接 new RDD 2. 分区(partition) 2.1 mak ...

  9. Python依赖库的导入、导出 | 解决内网安装模块问题 | Python

    通过在有网的机器A下下载所有的依赖包至package文件夹下: pip3 download -r requirements.txt -d ./package 将依赖包移动至没有网的机器B下,指定依赖包 ...

  10. .NetCore依赖注入(DI)之生命周期

    在 .NET Core 中,依赖注入(Dependency Injection,DI)是一种实现控制反转(Inversion of Control,IoC)的技术,它通过将依赖对象注入到需要它们的对象 ...