【个人笔记本】本地化部署 类chatgpt模型 详细流程

2023-09-18 11:41:06

不推荐小白,环境配置比较复杂

全部流程

  • 下载原始模型:Chinese-LLaMA-Alpaca-2
  • linux部署llamacpp环境
  • 使用llamacpp将Chinese-LLaMA-Alpaca-2模型转换为gguf模型
  • windows部署Text generation web UI 环境
  • 使用Text generation web UI 加载模型并进行对话

准备工作

  1. 笔记本环境:

    • 操作系统:win11
    • CPU:AMD R7535HS
    • GPU:笔记本4060显卡
    • CUDA版本:11.8
    • VM虚拟机:Ubuntu16

  2. 下载模型和部署环境全程需要挂梯子


下载原始模型

原项目链接:https://github.com/ymcui/Chinese-LLaMA-Alpaca-2

模型名称类型大小下载地址
Chinese-LLaMA-2-13B基座模型24.7 GB[百度] [Google] [🤗HF]
Chinese-LLaMA-2-7B基座模型12.9 GB[百度] [Google] [🤗HF]
Chinese-Alpaca-2-13B指令模型24.7 GB[百度] [Google] [🤗HF]
Chinese-Alpaca-2-7B指令模型12.9 GB[百度] [Google] [🤗HF]

下载Chinese-Alpaca-2-7B模型即可,百度网盘不需要挂梯子,其他都需要梯子


linux部署llamacpp环境

原项目链接:https://github.com/ggerganov/llama.cpp
原文档链接:https://github.com/ymcui/Chinese-LLaMA-Alpaca-2/wiki/llamacpp_zh

Step 1: 安装python3.10

sudo apt update
sudo apt install python3.10

Step 2: 克隆和编译llama.cpp

  1. 拉取最新版llama.cpp仓库代码

    # 要安装git+梯子
    git clone https://github.com/ggerganov/llama.cpp
    

    或者

    #浏览器挂梯子打开https://github.com/ggerganov/llama.cpp
    #下载项目
    #解压缩项目到本地
    
  2. 对llama.cpp项目进行编译,生成./main(用于推理)和./quantize(用于量化)二进制文件

    cd 解压缩项目路径
    make
    

Step 3: 生成量化版本模型

  1. 创建目录并拷贝模型到项目目录:zh-models/7B/

  2. 将Chinese-LLaMA-Alpaca-2模型转换为gguf模型

    #根目录
    python convert.py zh-models/7B/
    
  3. 将生成的fp16格式的gguf模型进行4-bit量化

    ./quantize ./zh-models/7B/ggml-model-f16.gguf ./zh-models/7B/ggml-model-q4_0.gguf q4_0
    

Step 4: 加载并启动模型

到这一步其实可以用llama.cpp的加载模型方式对话了
但我用的虚拟机,性能有限,故而使用Text generation web UI 加载模型,具体如何加载建议看原文档和项目说明


windows部署Text generation web UI 环境

原项目:https://github.com/oobabooga/text-generation-webui

Step 1: 下载安装Miniconda3_py310

链接:https://repo.anaconda.com/miniconda/Miniconda3-py310_23.3.1-0-Windows-x86_64.exe

Step 2: 克隆项目到本地

git clone  https://github.com/oobabooga/text-generation-webui

Step 3: 打开Miniconda3命令行,建立新conda环境

conda create -n textgen

Step 4: 下载安装相关的python各类环境库

有github链接的必须手动下载whl,再pip安装whl的绝对位置

conda activate textgen
cd 项目位置
pip install env/bitsandbytes-0.41.1-py3-none-win_amd64.whl
pip install E:\AI\环境第三方库\auto_gptq-0.4.2+cu117-cp310-cp310-win_amd64.whl

https://github.com/jllllll/exllama/releases/download/0.0.17/exllama-0.0.17+cu117-cp310-cp310-win_amd64.whl
pip install E:\AI\环境第三方库\exllama-0.0.17+cu117-cp310-cp310-win_amd64.whl

pip install llama-cpp-python==0.1.84

https://github.com/jllllll/llama-cpp-python-cuBLAS-wheels/releases/download/textgen-webui/llama_cpp_python_cuda-0.1.84+cu117-cp310-cp310-win_amd64.whl
pip install E:\AI\环境第三方库\llama_cpp_python_cuda-0.1.84+cu117-cp310-cp310-win_amd64.whl

https://github.com/jllllll/GPTQ-for-LLaMa-CUDA/releases/download/0.1.0/gptq_for_llama-0.1.0+cu117-cp310-cp310-win_amd64.whl
pip install E:\AI\环境第三方库\gptq_for_llama-0.1.0+cu117-cp310-cp310-win_amd64.whl

https://github.com/jllllll/ctransformers-cuBLAS-wheels/releases/download/AVX2/ctransformers-0.2.25+cu117-py3-none-any.whl
pip install E:\AI\环境第三方库\ctransformers-0.2.25+cu117-py3-none-any.whl

pip install -r requirements.txt -i 换源

Step 5: 启动web服务

conda activate textgen
cd E:/AI/项目/text-generation-webui-main
python server.py

使用Text generation web UI 加载模型并进行对话

  1. 打开生成的url网址
  2. 加载本地模型
  3. 对话即可
更多推荐

用一个RecyclerView实现二级评论

先上个效果图(没有UI,将就看吧),写代码的整个过程花了4个小时左右,相比当初自己开发需求已经快了很多了哈。给产品估个两天时间,摸一天半的鱼不过分吧(手动斜眼)需求拆分这种大家常用的评论功能其实也就没啥好拆分的了,简单列一下:默认展示一级评论和二级评论中的热评,可以上拉加载更多。二级评论超过两条时,可以点击展开加载更多

golang:context

context作用goroutine的退出机制多个goroutine都是平行的被调度的,多个goroutine如何协调工作涉及通信、同步、通知和退出通信:goroutine之间的通信同步chan通道同步:不带缓冲的chan提供了一个天然的同步等待机制。通过WaitGroup也可以为多个goroutine提供同步等待机制

数据库索引

一.索引的引用索引类似于一本书的目录,可以根据页码更快的查找到内容。索引可以加快访问数据库的速度二.索引的分类1.按表的列属性分类(1).普通索引:最基本的索引,没有任何限制;(2).唯一索引:索引列的值必须唯一,允许有空值。如果是组合索引,则列值的组合必须唯一;(3).主键索引:是一种特殊的唯一索引,一个表只能有一个

Golang代码漏洞扫描工具介绍——govulncheck

GolangGolang作为一款近年来最火热的服务端语言之一,深受广大程序员的喜爱,笔者最近也在用,特别是高并发的场景下,golang易用性的优势十分明显,但笔者这次想要介绍的并不是golang本身,而且golang代码的漏洞扫描工具,毕竟作为服务端的程序,安全性一直是一个不同忽视的地方Go安全团队在2022.09.0

基于Qt实现的可视化大屏监控

基于Qt实现的可视化大屏监控先上图基于Qt实现的可视化大屏监控总有人质疑QWidget实现不了炫酷的界面,其实QWidget已经很强大了,虽然很多效果没有现成的框架,所以比不上html5或者安卓这种,但是也能实现很多不错的效果了,而且在嵌入式设备上一样能达到这种效果,这是其他很多框架所不能实现的。本次大屏监控主要使用以

安达发APS|生产计划部门如何提升产量?

在当下制造业中,生产计划的制定和执行对于提高产量、降低成本、保证交货期等方面具有重要意义。随着科技的发展,越来越多的企业开始使用APS生产排程软件来优化生产计划,提高生产效率。本文将从以下几个方面介绍如何利用APS生产排程软件提升产量。1.需求预测与订单管理首先,企业需要对市场需求进行准确预测,以便合理安排生产计划。A

三、数学建模之非线性规划

1、定义2、例题matlan代码求解一、定义1.非线性规划(NonlinearProgramming,简称NLP)是一种数学优化问题的方法,它处理的目标函数或约束条件包含非线性项。与线性规划不同,非线性规划涉及到在非线性约束下寻找最优解。在许多领域都有广泛的应用,包括工程、经济学、物流、金融等。它可以用来解决各种实际问

Vue-01:MVVM数据双向绑定与Vue的生命周期

一、Vue介绍1.1什么是Vue?Vue是一个渐进式的JavaScript框架,用于构建用户界面。"渐进式"意味着Vue的设计理念是逐步增强应用的功能和复杂性,而不是一次性地引入所有功能。这使得开发者可以根据项目需求选择性地使用Vue的不同特性和功能。1.2Vue的优点Vue具有许多实际应用的优点,以下是其中一些:易学

全面了解SpringBoot拦截器

在本文中,我们将详细介绍SpringBoot中的拦截器,包括拦截器的概念、作用、实现方式、执行顺序、生命周期以及高级应用。最后,我们还将探讨拦截器的性能优化策略和常见问题。1.拦截器的概念和作用1.1什么是拦截器拦截器(Interceptor)是一种特殊的组件,它可以在请求处理的过程中对请求和响应进行拦截和处理。拦截器

前端代码规范

HTML编码规约(WC-HTML)-HTML编码规约前言本规约涉及HTML语言的编码风格、最佳实践。参与和反馈对规约有任何意见和建议,欢迎留言讨论:)1【推荐】使用2个空格缩进。统一使用2个空格缩进,不要使用4个空格或tab缩进:<!DOCTYPEhtml><html><head><title>Pagetitle</t

Rust中的结构体

专栏简介:本专栏作为Rust语言的入门级的文章,目的是为了分享关于Rust语言的编程技巧和知识。对于Rust语言,虽然历史没有C++、和python历史悠远,但是它的优点可以说是非常的多,既继承了C++运行速度,还拥有了Java的内存管理,就我个人来说,还有一个优点就是集成化的编译工具cargo,语句风格和C++极其相

热文推荐