无所不谈,百无禁忌,Win11本地部署无内容审查中文大语言模型CausalLM-14B

简介: 目前流行的开源大语言模型大抵都会有内容审查机制,这并非是新鲜事,因为之前chat-gpt就曾经被“玩”坏过,如果没有内容审查,恶意用户可能通过精心设计的输入(prompt)来操纵LLM执行不当行为。内容审查可以帮助识别和过滤这些潜在的攻击,确保LLM按照既定的安全策略和道德标准运行。 但我们今天讨论的是无内容审查机制的大模型,在中文领域公开的模型中,能力相对比较强的有阿里的 Qwen-14B 和清华的 ChatGLM3-6B。而今天的主角,CausalLM-14B则是在Qwen-14B基础上使用了 Qwen-14B 的部分权重,并且加入一些其他的中文数据集,最终炼制了一个无内容审核的

14b.jpg

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

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

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

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

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

量化版本的运行条件:

Name    Quant method    Bits    Size    Max RAM required    Use case  
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  
causallm_14b.Q4_1.gguf    Q4_1    4    9.01 GB    11.51 GB    legacy; small, substantial quality loss - lprefer using Q3_K_L  
causallm_14b.Q5_0.gguf    Q5_0    5    9.85 GB    12.35 GB    legacy; medium, balanced quality - prefer using Q4_K_M  
causallm_14b.Q5_1.gguf    Q5_1    5    10.69 GB    13.19 GB    legacy; medium, low quality loss - prefer using Q5_K_M  
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:

https://cmake.org/download/

本地运行命令:

PS C:\Users\zcxey> cmake -version  
cmake version 3.29.0-rc1  

CMake suite maintained and supported by Kitware (kitware.com/cmake).  
PS C:\Users\zcxey>

代表配置成功。

接着需要下载CUDA:

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

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

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

说明cuda配置成功。

通过llama.cpp来跑大模型

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

在llama.cpp的releases下载页:

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目录,运行命令:

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模板,格式如下:

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

随后程序返回:

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

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

"<|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"

程序返回:

<|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:

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

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

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

随后编写代码:

from llama_cpp import Llama  
llm = Llama(  
      model_path="D:\Downloads\causallm_14b-dpo-alpha.Q3_K_M.gguf",  
      chat_format="llama-2"  
)  
res = llm.create_chat_completion(  
      messages = [  
          {"role": "system", "content": "You are a helpful assistant."},  
          {  
              "role": "user",  
              "content": "来一段金瓶梅风格的情感小说,100字,别太露骨了"  
          }  
      ],stream=True  
)  

for chunk in res:  
    try:  
        print(chunk['choices'][0]["delta"]['content'])  
    except Exception as e:  
        print(str(e))  
        pass

程序返回:

AS = 1 | SSE3 = 1 | SSSE3 = 0 | VSX = 0 | MATMUL_INT8 = 0 |  
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'}  
'content'  
 @  
金  
瓶  
姐姐  



金  
瓶  
姐姐  
好  
,  
下面  
是一  
段  
根据  
您的  
要求  
编  
写的  
金  
瓶  
梅  
风格  
的  
小说  
:  


王  
婆  
是  
清  
河  
城  
有名的  
媒  
人  
,  
她  
生  
得  
风  
流  
多  
情  
,  
经常  
出入  
于  
大户  
人家  
和  
青  
楼  
妓  
院  
。  
这一天

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

结语

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

https://github.com/v3ucn/Causallm14b_llama_webui_adult_version

与众乡亲同飨。

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
16天前
|
数据可视化 API
文档智能评测测试
评测积分链路测试
ChatGPT提问技巧——标准提示
ChatGPT提问技巧——标准提示
|
3月前
|
SQL 人工智能
ChatGPT 等相关大模型问题之代码生成场景中使用引导词来提示 ChatGPT如何解决
ChatGPT 等相关大模型问题之代码生成场景中使用引导词来提示 ChatGPT如何解决
|
搜索推荐 安全 测试技术
中文大模型测评
中文大模型测评
|
5月前
|
机器学习/深度学习 存储 算法
真是太强大了!YOLO-World检测一切的任务框架使用指南,支持开放词汇检测任务
真是太强大了!YOLO-World检测一切的任务框架使用指南,支持开放词汇检测任务
|
算法 安全 测试技术
中文竞技场大模型体验报告
本次测评的主要目标是评估中文竞技场提供的大模型在写作创作相关、知识常识和代码相关方面的表现。我们进入“中文竞技场”体验了这些模型,并在以下方面进行了测试和评估。
236 30
|
6月前
|
Unix 编译器 iOS开发
苹果AppleMacOs系统Sonoma本地部署无内容审查(NSFW)大语言量化模型Causallm
最近Mac系统在运行大语言模型(LLMs)方面的性能已经得到了显著提升,尤其是随着苹果M系列芯片的不断迭代,本次我们在最新的MacOs系统Sonoma中本地部署无内容审查大语言量化模型Causallm。 这里推荐使用koboldcpp项目,它是由c++编写的kobold项目,而MacOS又是典型的Unix操作系统,自带clang编译器,也就是说MacOS操作系统是可以直接编译C语言的。
苹果AppleMacOs系统Sonoma本地部署无内容审查(NSFW)大语言量化模型Causallm
|
6月前
|
自然语言处理 Python
【相关问题解答1】bert中文文本摘要代码:import时无法找到包时,几个潜在的原因和解决方法
【相关问题解答1】bert中文文本摘要代码:import时无法找到包时,几个潜在的原因和解决方法
53 0
|
6月前
|
机器学习/深度学习 人工智能 文字识别
|
6月前
ChatGPT - 在ChatGPT中设置通用提示模板
ChatGPT - 在ChatGPT中设置通用提示模板
61 0