会员登录 立即注册

搜索

构建中国人自己的私人GPT

[复制链接]
崎山小鹿 发表于 2024-1-4 17:37:32 | 显示全部楼层 |阅读模式
崎山小鹿
2024-1-4 17:37:32 1971 7 看全部
在现实生活中,很多人的资料是不愿意公布在互联网上的,但是我们又要使用人工智能的能力帮我们处理文件、做决策、执行命令那怎么办呢?于是我们构建自己或公司的私人GPT变得非常重要。
先看效果:
微信图片_20240112222609.png
微信图片_20240110104511.png 微信图片_20240110105650.png

一、本地部署PrivateGPT

快速本地安装步骤:
1.        克隆存储库:
git clone https://github.com/imartinez/privateGPT
微信截图_20240105120314.png
文件目录
微信截图_20240105120435.png

2.        安装 Python :
pyenv install 3.11.0b4
微信图片_20240107134408.png
pyenv local 3.11.0b4
(如果报错可以直接安装python3.11)

系统之前已经安装过3.10的旧版本,为了避免干扰需要从系统变量path中删除:C:\Program Files\Python310\Scripts\;C:\Program Files\Python310\

3.        安装依赖:
poetry install --with ui,local
微信图片_20240105174302.png

4.        下载嵌入和 LLM 模型:
poetry run python scripts/setup
微信图片_20240105202120.png

微信图片_20240105213603.png

微信图片_20240106100012.png

5.        (可选,在powershell中运行)启用GPU:
$env:CMAKE_ARGS='-DLLAMA_CUBLAS=on'; poetry run pip install --force-reinstall --no-cache-dir llama-cpp-python
微信图片_20240109120710.png

6.        运行本地服务器:
set PGPT_PROFILES=local
poetry run python -m private_gpt
微信图片_20240106100730.png

7.        导航到 UI:在浏览器中打开 http://localhost:8001/。
微信图片_20240106101439.png




参考1:
●Git 是一个免费和开源 的分布式版本控制系统,旨在以速度和效率处理从小型到大型项目的所有内容.Git易于学习 占用空间小,性能快如闪电. 它优于 SCM 工具,如 Subversion, CVS, Perforce, 和 ClearCase 具有 廉价的本地分支, 方便的 暂存区域, 和 多个工作流等功能.下载Git

●PowerShell 是微软发布的一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能修改PowerShell的执行策略,PowerShell的执行策略不允许运行脚本,修改策略的方法是以管理员方式运行PowerShell,执行如下命令
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
恢复默认策略
Set-ExecutionPolicy -ExecutionPolicy Restricted

●pip则是python第三方库的包管理工具。需要在Python的官网上去>>下载<<
下载完成之后解压运行,输入:
python setup.py install
安装好之后,我们直接在命令行输入pip,同样会显示‘pip’不是内部命令,也不是可运行的程序。因为我们还没有添加环境变量,在path中添加pip的路径。通常是:
C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Scripts
列出已安装的软件包:python -m pip list
安装软件包:python -m pip install SomePackage
卸载安装包:python -m pip uninstall SomePackage

●pyenv是一个简单的python版本管理工具。它可以让你轻松地在多个版本的 Python 之间切换。ython每当从此文件夹中调用时,都会使用给定的版本。这与虚拟环境不同,虚拟环境需要显式激活。它简单、不引人注目,并且遵循 UNIX 单一用途工具只做好一件事的传统
pip install pyenv-win --target  $home\\.pyenv --no-user --upgrade
微信图片_20240107121345.png
添加系统设置
[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_ROOT',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")

[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\.pyenv\pyenv-win\bin;" + $env:USERPROFILE + "\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")

微信截图_20240105124957.png
更多pyenv资料
检查安装情况,查看版本和支持安装python的版本:
pyenv --version
pyenv install -l | findstr 3.11

使用 pip 安装(卸载)任何库或修改版本文件夹中的文件后,必须运行pyenv rehash以使用 Python 和库的可执行文件的新填充程序更新 pyenv。
注意:这必须在文件夹外部运行.pyenv。
要卸载 python 版本:pyenv uninstall 3.5.2
要查看您正在使用哪个 python 及其路径:pyenv version
要查看该系统上安装的所有 python 版本:pyenv versions

●Poetry 是 Python 中的依赖管理和打包工具。它允许您声明您的项目所依赖的库,并且它将为您管理(安装/更新)它们。Poetry 提供了一个锁定文件来确保可重复安装,并可以构建您的项目以进行分发。需要Python 3.8+。
安装指令:
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
微信截图_20240105172800.png
Invoke-WebRequest是PowerShell中类似curl的模块,从网页中获取内容。

●Chocolatey是windows下的软件包管理工具,使用chocolatey可以快速的安装软件,输如choco install softname即可。

●安装依赖llama-cpp-python的问题
For Windows 10/11

To install a C++ compiler on Windows 10/11, follow these steps:

Install Visual Studio 2022.
Make sure the following components are selected:
Universal Windows Platform development
C++ CMake tools for Windows
Download the MinGW installer from the MinGW website.
Run the installer and select the gcc component.

MinGW:GNU 编译器集合 (GCC) 的本机 Windows 端口,具有可免费分发的导入库和头文件,用于构建本机 Windows 应用程序;包括对 MSVC 运行时的扩展以支持 C99 功能。MinGW 的所有软件都将在 64 位 Windows 平台上执行。
微信图片_20240105185826.png

代码中加上force_download=True和resume_download=False参数,强制重新下载模型文件并禁用断点续传
EMBEDDINGS_MODEL_NAME:SentenceTransformers词向量模型位置,可以指定HuggingFace上的路径(会自动下载)
分析本地文件
privateGPT支持以下常规文档格式分析,例如(仅列举了最常用的):

Word文件:.doc,.docx
PPT文件:.ppt,.pptx
PDF文件:.pdf
纯文本文件:.txt
CSV文件:.csv
Markdown文件:.md
电子邮件文件:.eml,.msg

将需要分析的文档(不限于单个文档)放到privateGPT根节点下的source_documents目录下
运行ingest命令对文档进行分析
python ingest.py

Creating new vectorstore
Loading documents from source_documents
Loading new documents: 100%|██████████████████████| 1/1 [00:01<00:00,  1.42s/it]
Loaded 1 new documents from source_documents
Split into 7 chunks of text (max. 500 tokens each)
Creating embeddings. May take some minutes...
Using embedded DuckDB with persistence: data will be stored in: db
Ingestion complete! You can now run privateGPT.py to query your documents

注意:如果db目录中已经有相关分析文件,则会对数据文件进行积累。如果只想针对当前文档进行解析,请清空db目录后再ingest。


启用GPU,
安装

安装CPP

安装CPP

启动

BLAS

BLAS

GPU使用
使用GPU2.png
默认的 pip 安装行为是llama.cpp仅在 Linux 和 Windows 上针对 CPU 进行构建,并在 MacOS 上使用 Metal。llama.cpp支持多种硬件加速后端,包括 OpenBLAS、cuBLAS、CLBlast、HIPBLAS 和 Metal。所有这些后端都受支持llama-cpp-python,并且可以通过CMAKE_ARGS在安装之前设置环境变量来启用。CMAKE_ARGS在 Windows 上你可以这样设置:
●cmake 是 c/c++ 的一个项目管理工具。远古人类使用 make, 后来慢慢用 automake/autoconf/libtool 这些工具。 后来有人重新轮了几个,包括 scon, gyp , cmake。
cmake 一开始是 kde 的项目的管理工具,后来越来越多的人使用了。CMAKE_ARGS 指明在子项目中运行 cmake 时,cmake 的命令行参数。
1:
$env:CMAKE_ARGS='-DLLAMA_CUBLAS=on'; poetry run pip install --force-reinstall --no-cache-dir llama-cpp-python
2:
$env:CMAKE_ARGS = "-DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS";pip install llama-cpp-python

通过运行nvcc-version和nvidia-smi验证您的安装是否正确,确保您的CUDA版本是最新的,并检测到您的GPU。

高级配置
增加线程数以提升速度
privateGPT.py实际是调用了llama-cpp-python的接口,因此如果不做任何代码修改则采用的默认解码策略。打开privateGPT.py查找以下语句(大约30-35行左右,根据不同版本有所不同)。

llm = LlamaCpp(model_path=model_path, n_ctx=model_n_ctx, callbacks=callbacks, verbose=False)
这里即是LlamaCpp模型的定义,可根据llama-cpp-python的接口定义传入更多自定义参数,以下是其中一个示例,额外增加了解码线程数量,有助于提升解码速度(请根据实际物理核心数酌情配置)。

llm = LlamaCpp(model_path=model_path, n_ctx=model_n_ctx, callbacks=callbacks, verbose=False, n_threads=8)
在上述定义后几行会使用LangChain的RetrievalQA进行交互,具体定义和配置方式请参考LangChain的文档


有时候CMD出现错误提示,是因为CMD的权限不够
微信图片_20240106095603.png



参考2:
https://www.bilibili.com/video/BV1zN411M7Fn?t=8.4
从0到1训练自己的大模型 揭密ChatGPT背后的技能与应用「核心原理」

GPT Chat接入详解
如何把数据接入GPT
privateGPT官方帮助文档
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-1-7 16:27:10 | 显示全部楼层
崎山小鹿
2024-1-7 16:27:10 看全部
安装poetry的时候
安装指令:
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -

curl -sSL https://install.python-poetry.org | python3 -

WIN7的系统如果出错升级powershell
https://blog.csdn.net/xiayuexingkong/article/details/93733047

如果还出错将https://install.python-poetry.org内容另存为.py文件,用python执行。

py .\install.python-poetry.org.py
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-1-7 16:34:50 | 显示全部楼层
崎山小鹿
2024-1-7 16:34:50 看全部
win8以上才能支持python 3.11,所以win 7的系统不支持安装privateGPT
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-1-16 13:19:25 | 显示全部楼层
崎山小鹿
2024-1-16 13:19:25 看全部
AVX = 1 | AVX_VNNI = 0 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 1 | SSSE3 = 0 | VSX = 0 |
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-1-16 13:29:54 | 显示全部楼层
崎山小鹿
2024-1-16 13:29:54 看全部
在开头添加 BOS(句子开头)标记,在末尾添加 EOS(句子结尾)标记
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-1-16 14:27:38 | 显示全部楼层
崎山小鹿
2024-1-16 14:27:38 看全部
CUDA(Compute Unified Device Architecture,统一计算架构[1])是由英伟达NVIDIA所推出的一种软硬件集成技术,是该公司对于GPGPU的正式名称。透过这个技术,用户可利用NVIDIA的GPU进行图像处理之外的运算,亦是首次可以利用GPU作为C-编译器的开发环境。CUDA 开发包(CUDA Toolkit )只能将自家的CUDA C-语言(对OpenCL只有链接的功能[2]),也就是执行于GPU的部分编译成PTX中间语言或是特定NVIDIA GPU架构的机器代码(NVIDIA 官方称为 "device code");而执行于中央处理器部分的C / C++代码(NVIDIA 官方称为 "host code")仍依赖于外部的编译器,如Microsoft Windows下需要Microsoft Visual Studio;Linux下则主要依赖于GCC。[3][4][5]
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-1-24 15:11:26 | 显示全部楼层
崎山小鹿
2024-1-24 15:11:26 看全部
Try these combination:
Embedding: BAAI/bge-small-zh-v1.5 or BAAI/bge-large-zh-v1.5
LLM model: TheBloke/Chinese-alpaca-2-13B-GGUF
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-3-12 08:28:35 | 显示全部楼层
崎山小鹿
2024-3-12 08:28:35 看全部
二、对GPT3.5进行微调

将数据接入GPT需要遵循以下步骤:
1. 收集数据:通过各种方式收集需要用来训练GPT的数据,包括文本、图片、语音等。
2. 清洗数据:对收集到的数据进行清洗、去重、去噪、标注等处理,确保数据质量和准确性。
3. 数据格式转换:将收集到的数据按照GPT所需的格式进行转换,例如将文本数据转换成json格式,或将图片和语音数据转换成tensor格式。
4. 数据上传:将处理后的数据上传到GPT平台,可以使用云存储等方式进行上传,确保数据传输的速度和稳定性。
5. 训练模型:通过GPT平台提供的训练接口,训练自己的模型。在训练模型的过程中,调整超参数、优化算法、监控模型性能等。
6. 模型部署:训练完成后,将模型部署到生产环境中,以供实际应用。需要注意的是,为了保护数据的安全性,需要采取一系列的措施,如数据加密、权限控制、访问审计等,防止数据泄漏和滥用。同时,也需要保证数据的合法性和版权问题,遵守相关的法律法规和道德规范。


首先,我们需求准备数据集。为了锻炼ChatGPT模型,我们需求一个大型的文本数据集,其中包含大量的对话和文本对话。我们能够运用现有的公开数据集,如Common Crawl或Wikipedia,也能够本人构建数据集。

接下来,我们需求将数据集转换为模型能够运用的格式。这通常触及到将文本转换为数字向量,以便模型能够学习从文本到数字的映射。我们能够运用现有的工具,如Word2Vec或FastText,将文本转换为向量。

然后,我们需求定义模型架构。ChatGPT是一个序列到序列的模型,其中输入是一个句子,输出是另一个句子。我们能够运用现有的深度学习框架,如PyTorch或TensorFlow,来定义模型架构。

3.5只支持4096个token的限制
回复

使用道具 举报

  • 您可能感兴趣
您需要登录后才可以回帖 登录 | 立即注册 |

本版积分规则 返回列表

查看:1971 | 回复:7

  • 免费在线 Autodesk FBX 到 OpenUSD 转换器

    免费在线 Autodesk FBX 到 OpenUSD 转换器 https://products.aspose.app/3d/zh-cn/co

    阅读:248|2024-07-10
  • 3D数字人制作-Character creator

    Character creator 《角色创建者》是由Reallusion [1]公司推出的一款3D角色建模软件,

    阅读:337|2024-07-08
  • 第九区

    第九区的本质是创建一个世界模型,希望用这个世界模型能为老百姓和政府提供数据和推理

    阅读:318|2024-07-07
  • Discuz强大的广告系统

    强大的广告系统 页头通栏广告:页头通栏广告显示于论坛页面右上方 全局 页尾通栏广

    阅读:203|2024-07-07
  • 对于老百姓而言VR到底能做什么?

    VR技术自诞生以来不断发展,已经广泛应用于教育、医疗、工程、军事、航空、航海、影视

    阅读:288|2024-07-06
  • 剪映数字人口播原理

    剪映版本升级了,新版本6.0.1支持数字人定制,于是我赶紧申请了使用资格 目前的价格

    阅读:408|2024-07-03
  • 科学作息AI助手

    在魔塔空间创建了一个作息时间管理的agent >>>>>点我体验

    阅读:370|2024-07-01
  • 开发者聊科学作息时间表

    非常有幸对科学作息时间表app的开发者做一次采访。 问:你对科学作息时间表app满意么

    阅读:337|2024-07-01
  • 在线制作ico图标的网站

    给大家推荐一个在线制作ICO图标的网站 比特虫: https://www.bitbug.net/ 你也可以直

    阅读:400|2024-06-30
  • 恢复微信聊天记录

    微信好友删除了,之前的聊天记录能恢复么?能的,不管是安卓、苹果、Windows下的微信

    阅读:405|2024-06-30
金双石科技,软件开发20年,技术行业领先,您的满意,就是我们的目标,认真负责,开拓进取,让成品物超所值
关于我们
公司简介
发展历程
联系我们
本站站务
友情链接
新手指南
内容审核
商家合作
广告合作
商家入驻
新闻合作

手机APP

官方微博

官方微信

联系电话:15876572365 地址:深圳市宝安区西乡街道宝民二路宝民花园 ( 粤ICP备2021100124号-1 ) 邮箱:qishanxiaolu@qq.com
QQ|Powered by Discuz! X3.5 © 2001-2024 Discuz! Team.
快速回复 返回顶部 返回列表