会员登录 立即注册

搜索

构建中国人自己的私人GPT

[复制链接]
崎山小鹿 发表于 2024-1-4 17:37:32 | 显示全部楼层 |阅读模式
崎山小鹿
2024-1-4 17:37:32 9146 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官方帮助文档
天不生墨翟,万古如长夜!以墨运商,以商助墨。金双石科技长期招聘科技研发人才!微信:qishanxiaolu   电话:15876572365   公司:深圳市金双石科技有限公司
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 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
天不生墨翟,万古如长夜!以墨运商,以商助墨。金双石科技长期招聘科技研发人才!微信:qishanxiaolu   电话:15876572365   公司:深圳市金双石科技有限公司
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-1-7 16:34:50 | 显示全部楼层
崎山小鹿
2024-1-7 16:34:50 看全部
win8以上才能支持python 3.11,所以win 7的系统不支持安装privateGPT
天不生墨翟,万古如长夜!以墨运商,以商助墨。金双石科技长期招聘科技研发人才!微信:qishanxiaolu   电话:15876572365   公司:深圳市金双石科技有限公司
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 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 |
天不生墨翟,万古如长夜!以墨运商,以商助墨。金双石科技长期招聘科技研发人才!微信:qishanxiaolu   电话:15876572365   公司:深圳市金双石科技有限公司
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-1-16 13:29:54 | 显示全部楼层
崎山小鹿
2024-1-16 13:29:54 看全部
在开头添加 BOS(句子开头)标记,在末尾添加 EOS(句子结尾)标记
天不生墨翟,万古如长夜!以墨运商,以商助墨。金双石科技长期招聘科技研发人才!微信:qishanxiaolu   电话:15876572365   公司:深圳市金双石科技有限公司
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 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]
天不生墨翟,万古如长夜!以墨运商,以商助墨。金双石科技长期招聘科技研发人才!微信:qishanxiaolu   电话:15876572365   公司:深圳市金双石科技有限公司
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 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
天不生墨翟,万古如长夜!以墨运商,以商助墨。金双石科技长期招聘科技研发人才!微信:qishanxiaolu   电话:15876572365   公司:深圳市金双石科技有限公司
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 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的限制
天不生墨翟,万古如长夜!以墨运商,以商助墨。金双石科技长期招聘科技研发人才!微信:qishanxiaolu   电话:15876572365   公司:深圳市金双石科技有限公司
回复

使用道具 举报

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

本版积分规则 返回列表

管理员给TA私信
以墨运商,以商助墨。

查看:9146 | 回复:7

  • xnetcn.com

    http://www.xnetcn.com/ 星链中国 本域名出售,想要的请和我联系

    阅读:52|2024-12-06
  • 网站的宽带已经到达极限

    网站宽带100%使用率 已经不是第一次了

    阅读:590|2024-11-25
  • 高真实感的人物形象SyncTalk

    SyncTalk是一种基于NeRF的高同步性说话人合成方法,专门针对提升说话人视频真实感和

    阅读:1784|2024-11-20
  • wav2lip-384x384  训练

    Wav2Lip是一种基于深度学习的人物口型生成技术,它可以将音频信号转化为对应的人物口

    阅读:1525|2024-11-14
  • 修复视频中人脸面部工具

    帧处理选择: face_enhancer 面部增强模型:选择512的模型,gpen_bfr_512,下载地址

    阅读:970|2024-11-14
  • 15分钟训练数字人MimicTalk

    只需15分钟,就能训练高质量,个性化数字人大模型。由浙江大学与字节跳动联合推出Mim

    阅读:1477|2024-11-11
  • 去掉视频中的字幕-牛片网字幕抹除

    有时候我们需要去掉视频中的字幕,可以使用牛片网的字幕抹除功能 项目地址:https://w

    阅读:1107|2024-11-07
  • 程序员的出图神器ComfyUI

    ComfyUI 是一个强大且模块化的 Stable Diffusion 操作界面,与我们熟知的 WebUI 在底

    阅读:1242|2024-11-05
  • 平面2D数字人王者DH_live

    每个人都能用的数字人 一、项目地址:https://github.com/kleinlee/DH_live 目前我们

    阅读:1747|2024-11-05
  • 向日葵智能阳光导入系统

    向日葵智能阳光导入系统,方便部署在野外、山坡,沼泽给光线不足的地区带去阳光,有了

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

手机APP

官方微博

官方微信

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