深度学习环境搭建 cuda、模型量化bitsandbytes安装教程 windows、linux

cuda、cudann、conda安装教程

输入以下命令,查看 GPU 支持的最高 CUDA 版本。

nvidia-smi

cuda安装(cudatoolkit)

前往 Nvidia 的 CUDA 官网:CUDA Toolkit Archive | NVIDIA Developer

CUDA Toolkit 11.8 Downloads | NVIDIA Developer

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run

cudnn安装

linux

CUDA Toolkit Archive | NVIDIA Developer

下载下来后扔到服务器上:

cudnn-linux-x86_64-8.4.1.50_cuda10.2-archive.tar.xz

注意他是 xz 不是 gz 所以解压就是:

tar -xf cudnn-linux-x86_64-8.4.1.50_cuda10.2-archive.tar.xz

之前,是将 cudnn 的文件扔到 cuda 的路径就OK了,然而事实上,不一定放到cuda的路径,只要添加到 LD_LIBRARY_PATH 即可

解压之后,有目录cudnn-linux-x86_64-8.4.1.50_cuda10.2-archive,其下有 include 和 lib

将该路径添加到 LD_LIBRARY_PATH,给这个路径起一个名字:

放到配置文件里:

echo "export CUDNN_DIR=$(pwd)" >> /etc/profile
echo "export LD_LIBRARY_PATH=$CUDNN_DIR/lib:$LD_LIBRARY_PATH" >> /etc/profile

之后刷新一下环境变量:

source /etc/profile

刷新完看看是否正确添加:

echo $CUDNN_DIR
/root/cudnn-linux-x86_64-8.4.1.50_cuda10.2-archive

返回这个就OK

再看看 LD_LIBRARY_PATH 对不对

echo $LD_LIBRARY_PATH

torch安装

Start Locally | PyTorch

根据自己电脑和系统在网页上选择适配自己的选项。

  • 第一行是选择torch是否稳定版本,默认稳定版本。
  • 第二行是选择自己的系统,有linux,mac,windows。
  • 第三行是在什么环境安装:有anacoda里面安装, cmd里面pip安装,在libtorch安装,或者源码安装。
  • 第四行是语言选择:提供了python和c++/java
  • 第五行是否选择用cuda gpu版本的,如果是就要去看自己cuda版本(自行谷歌,百度),我这里选择none,不用gpu,这样就是cpu版本的torch
  • 第六行是安装的命令直接复制即可,到选择相应的环境安装,用anaconda或者pip这两个环境居多。

还有一个要特别说明,一定要用64位的环境,不论是python IDE或者Anaconda都要安装64位的,否则你尝试网上各种方法都没用。(博主含泪的经验,花了大量时间,网上查遍方法,结果发现是位数问题,直接卸载了32位的anaconda,装了64位发现成功了),至于位数怎么看,如果安装的是系统python,直接在cmd命令里面输入python,前提是添加了系统环境变量给python才行。如下图我就是开始安装的32位,尝试了很多方法都失败。ana从打开始也是32位的。

bitsandbytes安装

window

魔改bitsandbytes库让他支持windows。

python 复制代码
python -m pip install bitsandbytes --prefer-binary --extra-index-url=https://jllllll.github.io/bitsandbytes-windows-webui

安装window版本的bitsandbytes

或者

python 复制代码
pip uninstall bitsandbytes
pip install bitsandbytes-windows

另一种选择https://github.com/acpopescu/bitsandbytes/releases/tag/v0.38.0-win0

linux

GitHub - TimDettmers/bitsandbytes: 8-bit CUDA functions for PyTorch

1.pip安装

python 复制代码
pip install bitsandbytes

2.本地编译,选择自己的cuda版本

python 复制代码
git clone https://github.com/timdettmers/bitsandbytes.git
cd bitsandbytes

# CUDA_VERSIONS in {110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 120}
# make argument in {cuda110, cuda11x, cuda12x}
# if you do not know what CUDA you have, try looking at the output of: python -m bitsandbytes
CUDA_VERSION=117 make cuda11x
python setup.py install

将 Int8 推理与 HuggingFace 转换器结合使用

python 复制代码
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
  'decapoda-research/llama-7b-hf,
  device_map='auto',
  load_in_8bit=True,
  max_memory=f'{int(torch.cuda.mem_get_info()[0]/1024**3)-2}GB')

int4

python 复制代码
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation import GenerationConfig
from transformers import AutoModelForCausalLM, BitsAndBytesConfig

# quantization configuration for NF4 (4 bits)
quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type='nf4',
    bnb_4bit_compute_dtype=torch.bfloat16
)
。。。。。。
model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen-7B-Chat",
    quantization_config=quantization_config,
    device_map="auto",
    trust_remote_code=True
).eval()

int4效果,12G显卡可以带动

python 复制代码
from transformers import AutoModelForCausalLM, BitsAndBytesConfig, AutoTokenizer

# quantization configuration for NF4 (4 bits)
quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type='nf4',
    bnb_4bit_compute_dtype=torch.bfloat16
)

# quantization configuration for Int8 (8 bits)
# quantization_config = BitsAndBytesConfig(load_in_8bit=True)
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen-7B-Chat", trust_remote_code=True)

model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen-7B-Chat",
    device_map="cuda:0",
    quantization_config=quantization_config,
    trust_remote_code=True,
).eval()

response, history = model.chat(tokenizer, "你好", history=None)
print(response)
response, history = model.chat(tokenizer, "给我讲一个年轻人奋斗创业最终取得成功的故事。", history=history)
print(response)
你好!很高兴为你提供帮助。
这是一个关于一个年轻人奋斗创业最终取得成功的故事。

这个年轻人叫做李明,他来自一个普通的家庭。他从小就对商业感兴趣,梦想着有一天能够成为一名成功的企业家。然而,他的家庭条件并不富裕,他需要通过自己的努力来实现自己的梦想。

李明在大学期间就开始创业,他成立了一家电子商务公司。一开始,公司的发展并不顺利,面临着很多困难和挑战。但是,李明并没有放弃,他坚定地相信自己的梦想,并且不断地努力工作。

他不断地学习和探索,寻找新的商机和创意。他也不断地与人交流和合作,寻求帮助和支持。最终,他的公司开始逐渐发展壮大,获得了越来越多的客户和投资者。

经过几年的努力,李明的公司已经成为了一家成功的电子商务企业。他的创业经历也激励了很多人,让他们相信只要努力奋斗,就能够实现自己的梦想。

这个故事告诉我们,创业并不是一件容易的事情,需要付出大量的努力和时间。但是,只要我们相信自己,不断努力工作,就一定能够取得成功。

参考资料

GitHub - jllllll/bitsandbytes-windows-webui: Windows compile of bitsandbytes for use in text-generation-webui.

GitHub - Keith-Hon/bitsandbytes-windows: 8-bit CUDA functions for PyTorch in Windows 10

相关推荐
悟兰因w4 分钟前
论文阅读(三十五):Boundary-guided network for camouflaged object detection
论文阅读·人工智能·目标检测
大山同学6 分钟前
多机器人图优化:2024ICARA开源
人工智能·语言模型·机器人·去中心化·slam·感知定位
Topstip13 分钟前
Gemini 对话机器人加入开源盲水印技术来检测 AI 生成的内容
人工智能·ai·机器人
Bearnaise16 分钟前
PointMamba: A Simple State Space Model for Point Cloud Analysis——点云论文阅读(10)
论文阅读·笔记·python·深度学习·机器学习·计算机视觉·3d
Zfox_17 分钟前
【Linux】进程信号全攻略(二)
linux·运维·c语言·c++
安於宿命21 分钟前
【Linux】简易版shell
linux·运维·服务器
小嗷犬29 分钟前
【论文笔记】VCoder: Versatile Vision Encoders for Multimodal Large Language Models
论文阅读·人工智能·语言模型·大模型·多模态
黄小耶@33 分钟前
linux常见命令
linux·运维·服务器
Struart_R34 分钟前
LVSM: A LARGE VIEW SYNTHESIS MODEL WITH MINIMAL 3D INDUCTIVE BIAS 论文解读
人工智能·3d·transformer·三维重建
叫我龙翔34 分钟前
【计网】实现reactor反应堆模型 --- 框架搭建
linux·运维·网络