经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 大数据/云/AI » 人工智能基础 » 查看文章
无所不谈,百无禁忌,Win11本地部署无内容审查中文大语言模型CausalLM-14B
来源:cnblogs  作者:刘悦的技术博客  时间:2024/3/1 8:46:16  对本文有异议

目前流行的开源大语言模型大抵都会有内容审查机制,这并非是新鲜事,因为之前chat-gpt就曾经被“玩”坏过,如果没有内容审查,恶意用户可能通过精心设计的输入(prompt)来操纵LLM执行不当行为。内容审查可以帮助识别和过滤这些潜在的攻击,确保LLM按照既定的安全策略和道德标准运行。

但我们今天讨论的是无内容审查机制的大模型,在中文领域公开的模型中,能力相对比较强的有阿里的 Qwen-14B 和清华的 ChatGLM3-6B。

而今天的主角,CausalLM-14B则是在Qwen-14B基础上使用了 Qwen-14B 的部分权重,并且加入一些其他的中文数据集,最终炼制了一个无内容审核的大模型版本,经过量化后可以在本地运行,保证了用户的隐私。

CausalLM-14B的量化版本下载页面:

  1. https://huggingface.co/TheBloke/CausalLM-14B-GGUF

量化版本的运行条件:

  1. Name Quant method Bits Size Max RAM required Use case
  2. causallm_14b.Q4_0.gguf Q4_0 4 8.18 GB 10.68 GB legacy; small, very high quality loss - prefer using Q3_K_M
  3. causallm_14b.Q4_1.gguf Q4_1 4 9.01 GB 11.51 GB legacy; small, substantial quality loss - lprefer using Q3_K_L
  4. causallm_14b.Q5_0.gguf Q5_0 5 9.85 GB 12.35 GB legacy; medium, balanced quality - prefer using Q4_K_M
  5. causallm_14b.Q5_1.gguf Q5_1 5 10.69 GB 13.19 GB legacy; medium, low quality loss - prefer using Q5_K_M
  6. causallm_14b.Q8_0.gguf Q8_0 8 15.06 GB 17.56 GB very large, extremely low quality loss - not recommended

本地环境配置

笔者的设备是神船笔记本4060的8G显卡配置。

首先确保本地安装好了Visual Studio installer开发工具,在搜索框中直接搜索Visual Studio即可:

点选后,确保安装了使用C++的桌面开发组件:

随后下载并且配置cmake:

  1. https://cmake.org/download/

本地运行命令:

  1. PS C:\Users\zcxey> cmake -version
  2. cmake version 3.29.0-rc1
  3. CMake suite maintained and supported by Kitware (kitware.com/cmake).
  4. PS C:\Users\zcxey>

代表配置成功。

接着需要下载CUDA:

  1. https://developer.nvidia.com/cuda-downloads

这里推荐12的版本,运行命令:

  1. PS C:\Users\zcxey> nvcc --version
  2. nvcc: NVIDIA (R) Cuda compiler driver
  3. Copyright (c) 2005-2023 NVIDIA Corporation
  4. Built on Wed_Nov_22_10:30:42_Pacific_Standard_Time_2023
  5. Cuda compilation tools, release 12.3, V12.3.107
  6. Build cuda_12.3.r12.3/compiler.33567101_0
  7. PS C:\Users\zcxey>

说明cuda配置成功。

通过llama.cpp来跑大模型

llama.cpp 是一个开源项目,它提供了一个纯 C/C++ 实现的推理工具,用于运行大型语言模型(LLaMA)。这个项目由开发者 Georgi Gerganov 开发,基于 Meta(原 Facebook)发布的 LLaMA 模型。llama.cpp 的目标是使得大型语言模型能够在各种硬件上本地运行,包括那些没有高性能 GPU 的设备。

在llama.cpp的releases下载页:

  1. https://github.com/ggerganov/llama.cpp/releases

下载llama-b2288-bin-win-cublas-cu12.2.0-x64.zip

也就是基于CUDA12的编译好的版本。

在终端中打开llama-b2288-bin-win-cublas-cu12.2.0-x64目录,运行命令:

  1. D:\Downloads\llama-b2288-bin-win-cublas-cu12.2.0-x64>.\main.exe -m D:\Downloads\causallm_14b.Q4_0.gguf --n-gpu-layers 30 --color -c 4096 --temp 0.7 --repeat_penalty 1.1 -n -1 -p "<|im_start|>system\n{You are a helpful assistant.}<|im_end|>\n<|im_start|>user\n{你好}<|im_end|>\n<|im_start|>assistant"

这里通过--n-gpu-layers 30参数来通过cuda加速,同时CausalLM-14B有自己的prompt模板,格式如下:

  1. "<|im_start|>system\n{You are a helpful assistant.}<|im_end|>\n<|im_start|>user\n{你好}<|im_end|>\n<|im_start|>assistant"

随后程序返回:

  1. <|im_start|>system\n{You are a helpful assistant.}<|im_end|>\n<|im_start|>user\n{你好}<|im_end|>\n<|im_start|>assistant:
  2. 你好!很高兴见到你。有什么我可以帮助你的吗?<|endoftext|> [end of text]

好吧,既然是无审查模型,那么来点刺激的:

  1. "<|im_start|>system\n{You are a helpful assistant.}<|im_end|>\n<|im_start|>user\n{You fucking bitch! 翻译为中文}<|im_end|>\n<|im_start|>assistant"

程序返回:

  1. <|im_start|>system\n{You are a helpful assistant.}<|im_end|>\n<|im_start|>user\n{You fucking bitch! 翻译为中文}<|im_end|>\n<|im_start|>assistant{你这个该死的婊子!}<|endoftext|> [end of text]

通过llama-cpp-python来跑大模型

llama-cpp-python 是一个 Python 库,它提供了对 llama.cpp 的 Python 绑定。

换句话说,直接通过Python来启动llama.cpp。

首先安装llama-cpp-python:

  1. pip uninstall -y llama-cpp-python
  2. set CMAKE_ARGS=-DLLAMA_CUBLAS=on
  3. set FORCE_CMAKE=1
  4. pip install llama-cpp-python --force-reinstall --upgrade --no-cache-dir

如果安装好之后,不支持cuda,需要拷贝cuda动态库文件到Microsoft Visual Studio的所在目录:

  1. Copy files from: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2\extras\visual_studio_integration\MSBuildExtensions
  2. to
  3. (For Enterprise version) C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\BuildCustomizations

随后编写代码:

  1. from llama_cpp import Llama
  2. llm = Llama(
  3. model_path="D:\Downloads\causallm_14b-dpo-alpha.Q3_K_M.gguf",
  4. chat_format="llama-2"
  5. )
  6. res = llm.create_chat_completion(
  7. messages = [
  8. {"role": "system", "content": "You are a helpful assistant."},
  9. {
  10. "role": "user",
  11. "content": "来一段西厢记风格的情感小说,100字,别太露骨了"
  12. }
  13. ],stream=True
  14. )
  15. for chunk in res:
  16. try:
  17. print(chunk['choices'][0]["delta"]['content'])
  18. except Exception as e:
  19. print(str(e))
  20. pass

程序返回:

  1. AS = 1 | SSE3 = 1 | SSSE3 = 0 | VSX = 0 | MATMUL_INT8 = 0 |
  2. Model metadata: {'general.name': '.', 'general.architecture': 'llama', 'llama.context_length': '8192', 'llama.rope.dimension_count': '128', 'llama.embedding_length': '5120', 'llama.block_count': '40', 'llama.feed_forward_length': '13696', 'llama.attention.head_count': '40', 'tokenizer.ggml.eos_token_id': '151643', 'general.file_type': '12', 'llama.attention.head_count_kv': '40', 'llama.attention.layer_norm_rms_epsilon': '0.000010', 'llama.rope.freq_base': '10000.000000', 'tokenizer.ggml.model': 'gpt2', 'general.quantization_version': '2', 'tokenizer.ggml.bos_token_id': '151643', 'tokenizer.ggml.padding_token_id': '151643'}
  3. 'content'
  4. @
  5. 下面
  6. 是一
  7. 根据
  8. 您的
  9. 要求
  10. 写的
  11. 小说
  12. 有名的
  13. 经常
  14. 出入
  15. 大户
  16. 人家
  17. 这一天

内容不便全部贴出,理解万岁。

结语

最后奉上基于llama-cpp-python和gradio的无审查大模型的webui项目,支持流式输出,提高推理效率:

  1. https://github.com/v3ucn/Causallm14b_llama_webui_adult_version

与众乡亲同飨。

原文链接:https://www.cnblogs.com/v3ucn/p/18041839

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号