T-MAC在Windows(64)上的摆设推理

打印 上一主题 下一主题

主题 506|帖子 506|积分 1518

文章目录

  目录
  文章目录
  前言
  一、安装环境和依赖
  1.安装Conda + Visual studio
  2.安装Clang-17.0.6
  二、构建T-MAC
  1.引入库
  2.进入项目目录并创建环境
  3.构建tvm
  4.安装T-MAC
  5.验证安装 
  三、使用T-MAC推理
  总结
  
  
前言

T-MAC是微软研究院提出的一种创新方法,通过查表法(LUT)在CPU上实现低比特LLM(即权重量化LLM)的高效推理
本文是初学者根据官方文档和网络资料调通T-MAC的过程以及遇到的题目
T-MAC github地点:GitHub - microsoft/T-MAC: Low-bit LLM inference on CPU with lookup table


一、安装环境和依赖

1.安装Conda + Visual studio

根据官方文档,在Windows上安装依赖推荐使用conda+visual studio的方式。
Anaconda下载地点:Download Anaconda Distribution | Anaconda
安装Visual Studio时注意选择使用C++的桌面开发,不要启用“实用于 Windows 的 C++ Clang 工具”,因为 Clang 版本大概不兼容。

因为我们要使用自界说的LLVM 工具集版本,因此需要在单个组件中搜刮clang并将"对 LLVM (clang-cl) 工具集的 MSBuild 支持"选中

然后举行安装即可
2.安装Clang-17.0.6

下载地点ownload LLVM releases
在LLVM官网的下载页面找到17.0.6版本并举行下载

安装时注意选择将路径添加至所有用户的系统环境变量之中

安装后在高级系统设置-环境变量-系统变量-Path中可以找到LLVM的路径
3.设置自界说 LLVM 位置和工具集

要设置 LLVM 的自界说路径并为一个或多个项目设置自界说 LLVM 工具集版本,请创建Directory.build.props文件。 然后,将该文件添加到恣意项目的根文件夹。 可以将它添加到根解决方案文件夹,以将它应用于解决方案中的所有项目。 该文件应如以下示例所示(但使用现实的 LLVM 路径和版本号):
  1. <Project>
  2.   <PropertyGroup>
  3.     <LLVMInstallDir>E:\Program Files\LLVM</LLVMInstallDir>
  4.     <LLVMToolsVersion>17.0.6</LLVMToolsVersion>
  5.   </PropertyGroup>
  6. </Project>
复制代码
二、构建T-MAC

1.引入库

打开Developer PowerShell for VS 20XX

输入命令:
  1. git clone --recursive https://github.com/microsoft/T-MAC.git
复制代码
注意需要加入参数--recursive以克隆子模块
克隆时间比较久,如果网络不理想建议使用代理服务器。
2.进入项目目录并创建环境

  1. cd T-MAC
  2. conda env create --file conda\tvm-build-environment.yaml
  3. conda activate tvm-build
复制代码
使用Developer PowerShell进入到T-MAC根目录,创建并激活环境
3.构建tvm

  1. cd 3rdparty\tvm
  2. mkdir build
  3. cp cmake\config.cmake build
复制代码
使用以上命令进入tvm文件夹,创建build文件夹,并将config.cmake复制于其中
 之后,打开config.cmake文件,在文件最后加入一行:
set(USE_LLVM llvm-config)

然后实行
  1. cd build
  2. cmake .. -A x64
  3. cmake --build . --config Release -- /m
复制代码
如果在运行 cmake .. -A x64 构建 TVM 时遇到类似 string sub-command regex, mode replace: regex "$" matched an empty string. 的错误,不用担心,只需再次运行 cmake .. -A x64 即可。 
构建tvm时需要的时间较久,且期间CPU占用极高。
4.安装T-MAC

  1. cd ..\..\..\  # back to project root directory
  2. $env:MANUAL_BUILD = "1"
  3. $env:PYTHONPATH = "$pwd\3rdparty\tvm\python"
  4. pip install -e . -v
复制代码
5.验证安装 

安装完成后,可以实行命令验证
  1. python -c "import t_mac; print(t_mac.__version__); from tvm.contrib.clang import find_clang; print(find_clang())"
复制代码
 输出如下内容

注意,以后每次再重新打开Developer PowerShell时,需要重新激活tvm-build环境,并设置PATHONPATH环境变量
三、使用T-MAC推理

以下仅为官方文档内的一个示例,使用EfficientQAT(GPTQ格式)Llama-3-8b-instruct-w2-g128
  1. huggingface-cli download ChenMnZ/Llama-3-8b-instruct-EfficientQAT-w2g128-GPTQ --local-dir ${model_dir}
复制代码
 起首需要使用以上命令下载模型,需要将其中的
  1. ${model_dir} 替换为具体路径 例如 D:\project\T-MAC\modeldir
复制代码
下载模型时若网络不佳建议使用代理服务器,注意有没有下载失败的文件,也可以去huggingface网站下载。
下载完成后使用代码实行推理
  1. python tools/run_pipeline.py -o ${model_dir} -m llama-3-8b-2bit -q int_n
复制代码
仍然注意将其中的 ${model_dir} 替换为具体路径
以下为一个大概的示例输出:
  1. Running STEP.0: Compile kernels
  2.   Running command in /Users/user/jianyu/T-MAC/deploy:
  3.     python compile.py -o tuned -da -nt 4 -tb -gc -gs 128 -ags 64 -t -m hf-bitnet-3b -r
  4. Running STEP.1: Build T-MAC C++ CMakeFiles
  5.   Running command in /Users/user/jianyu/T-MAC/build:
  6.     cmake -DCMAKE_INSTALL_PREFIX=/Users/user/jianyu/T-MAC/install ..
  7. Running STEP.2: Install T-MAC C++
  8.   Running command in /Users/user/jianyu/T-MAC/build:
  9.     cmake --build . --target install --config Release
  10. Running STEP.3: Convert HF to GGUF
  11.   Running command in /Users/user/jianyu/T-MAC/3rdparty/llama.cpp:
  12.     python convert-hf-to-gguf-t-mac.py /Users/user/Downloads/test_models/hf-bitnet-3B --outtype i2 --outfile /Users/user/Downloads/test_models/hf-bitnet-3B/ggml-model.i2.gguf --kcfg /Users/user/jianyu/T-MAC/install/lib/kcfg.ini
  13. Running STEP.4: Build llama.cpp CMakeFiles
  14.   Running command in /Users/user/jianyu/T-MAC/3rdparty/llama.cpp/build:
  15.     cmake .. -DLLAMA_TMAC=ON -DCMAKE_PREFIX_PATH=/Users/user/jianyu/T-MAC/install/lib/cmake/t-mac -DCMAKE_BUILD_TYPE=Release -DLLAMA_LLAMAFILE_DEFAULT=OFF -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
  16. Running STEP.5: Build llama.cpp
  17.   Running command in /Users/user/jianyu/T-MAC/3rdparty/llama.cpp/build:
  18.     cmake --build . --target main --config Release
  19. Running STEP.6: Run inference
  20.   Running command in /Users/user/jianyu/T-MAC/3rdparty/llama.cpp/build:
  21.     /Users/user/jianyu/T-MAC/3rdparty/llama.cpp/build/bin/main -m /Users/user/Downloads/test_models/hf-bitnet-3B/ggml-model.i2.gguf -n 128 -t 4 -p Microsoft Corporation is an American multinational corporation and technology company headquartered in Redmond, Washington. -b 1 -ngl 0 -c 2048
  22. Check logs/2024-07-15-17-10-11.log for inference output
复制代码
 本人在STEP.0时遇到了一次如下错误:

其原因是端口被占用。
 通过任务管理器-性能-资源监视器-网络-侦听端口可以看到9001为system历程

需要到T-MAC\3rdparty\tvm\python\tvm\autotvm\measure\measure_methods.py下修改端口位置

初始为9000,修改为9010后解决报错


总结


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张裕

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表