[LLM] 开源 AI 大语言模型的本地化定制实践

LLM(Large Language Model,大型语言模型)是一种基于深度学习的自然语言处理模型,旨在理解和生成人类语言。
它们在大量的文本数据上进行训练,可以执行广泛的任务,包括文本总结、翻译、情感分析等等。
LLM的特点是规模庞大,包含数十亿的参数,帮助它们学习语言数据中的复杂模式。
本文假定你对一些类似 ChatGPT 的工具已有使用经验, 了解其中的强大和不足。
LLM 应用层面介绍
1、LLM 当前主要应用
通用问答类——基于OpenAI等做的套壳。(能做不限于创作、翻译、分析、摘要、预测)
领域搜索类——基于”数据库”做的垂直领域搜索。*
2、为什么需要开源的 LLM ?
隐私性
基于openai或其它第三方模型时对数据的控制性;AWS、Azure内的数据隐私性。
(随提供方政策)
精准性
当你不知道某件事的时候,生成的答案感觉是靠谱的,但不一定正确。
(GPT插件系统、可信数据源)
怎么验证这个正确性、提高服务的准确性,是需要提高的地方。
拓展性
单独使用 LLM 通常不足以创建一个真正强大的应用程序,真正的强大之处在于将它们与其他计算或知识来源结合起来。
(LLM训练成本)
后面会介绍基于语言模型的开发框架 LangChain。
3、LLM 应用优化方向
0.(模型架构改进)
1. 模型调参。(Fine-tuning:小规模的特定任务上继续训练)
2. 关键词拆分。(AutoGPT为代表的,用合理的架构让模型自动拆分关键词、更细使得精度提高)
LLM 应用实践
1. 单独部署使用开源 LLM
一种是用终端执行,另一种是用比较多的 Webui 可以直接与同一类LLM进行chat。
比如基于 ChatGLM 的 ChatGLM-webui(https://github.com/Akegarasu/ChatGLM-webui/)操作示例:https://www.cnblogs.com/farwish/p/17289475.html
比如基于 alpaca-7B-ggml 的 Serge(https://github.com/nsarrazin/serge)操作示例:https://www.cnblogs.com/farwish/p/17280159.html
等等。
2. 开源 LLM 与私有数据配合
LangChain 框架使从数据到 LLM 的各个部分都组件化,LangChain + LLMs 较为通用。
1)LangChain 与某一个 LLM 的结合。
# 下载语言模型 # 支持CPU的 LLaMA 2 7B 模型
# https://gpt4all.io/ 首页可以找到该模型
# 下载地址:https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGML/resolve/main/llama-2-7b-chat.ggmlv3.q4_0.bin
local_path = (
"./llama-2-7b-chat.ggmlv3.q4_0.bin" # replace with your desired local file path
) # 执行下载 import requests from pathlib import Path
from tqdm import tqdm Path(local_path).parent.mkdir(parents=True, exist_ok=True) url = 'https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGML/resolve/main/llama-2-7b-chat.ggmlv3.q4_0.bin' # send a GET request to the URL to download the file. Stream since it's large
response = requests.get(url, stream=True) # open the file in binary mode and write the contents of the response to it in chunks
# This is a large file, so be prepared to wait.
with open(local_path, 'wb') as f:
for chunk in tqdm(response.iter_content(chunk_size=8192)):
if chunk:
f.write(chunk)
运行:
# !pip install langchain
# !pip install llama-cpp-python ## https://python.langchain.com/docs/integrations/llms/llamacpp # 1.导入包
from langchain.llms import LlamaCpp
from langchain import PromptTemplate, LLMChain
from langchain.callbacks.manager import CallbackManager
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler # 2.回调
# 回调支持逐个token的流式处理
callback_manager = CallbackManager([StreamingStdOutCallbackHandler()])
# 在回调管理器中需要传递 verbose 参数 # 3. 模型,确保路径正确
llm = LlamaCpp(
model_path="./llama-2-7b-chat.ggmlv3.q4_0.bin",
temperature=0.75,
max_tokens=2000,
top_p=1,
callback_manager=callback_manager,
verbose=True,
) # 4.提问
prompt = """
Question: who are you?
"""
llm(prompt)
其它支持的 LLMs:https://python.langchain.com/docs/integrations/llms
2)对文档作为知识源的查询提问。
由于 LLM 擅长于文本理解,想对文档内容进行提问时,可以作为一个很好的工具。
总体架构概览:

将非结构化数据转换为 QA 对话的链路过程:
1. Loading:首先我们需要加载我们的数据。
2. Splitting:文本分隔符将文档分成指定大小的分隔符。
3. Storage:(通常是一个向量存储) 存储将容纳并嵌入分割的字符。
4. Retrieval:应用程序从存储中检索分割的文本 (例如,通常情况下与输入问题有类似的Embedding)
5. Generation:这个 LLM 使用 含问题的提示词(prompt) 和 检索到的数据(data) 来生成答案。
6. Conversation:通过在 QA 链中添加 Memory 来进行多回合对话。

详细文档:https://python.langchain.com/docs/use_cases/question_answering.html
3. 多模态应用方面
这里不展开讨论,除了数据量本身庞大,计算耗费更多资源。
模型层面主要在于处理多种不同类型的数据,例如图像、音频和视频等。
多模态数据的获取和标注成本较高,因为需要同时收集和标注不同类型的数据。
随着硬件等各方面提升、未来这一方面应用可能还会有更多场景涌现。
其它类型Ai在线体验:ChatAi.
Other:https://gist.github.com/psychemedia/51f45fbfe160f78605bdd0c1b404e499
Other:https://soulteary.com/2023/07/23/build-llama2-chinese-large-model-that-can-run-on-cpu.html
Link:https://www.cnblogs.com/farwish/p/17632893.html
[LLM] 开源 AI 大语言模型的本地化定制实践的更多相关文章
- 保姆级教程:用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话
导读 在当今的人工智能时代,大型AI模型已成为获得人工智能应用程序的关键.但是,这些巨大的模型需要庞大的计算资源和存储空间,因此搭建这些模型并对它们进行交互需要强大的计算能力,这通常需要使用云计算服务 ...
- 本地推理,单机运行,MacM1芯片系统基于大语言模型C++版本LLaMA部署“本地版”的ChatGPT
OpenAI公司基于GPT模型的ChatGPT风光无两,眼看它起朱楼,眼看它宴宾客,FaceBook终于坐不住了,发布了同样基于LLM的人工智能大语言模型LLaMA,号称包含70亿.130亿.330亿 ...
- AI 也开源:50 大开源 AI 项目 (转)
这些开源AI项目专注于机器学习.深度学习.神经网络及其他应用场合. 自IT界早期以来,研制出能像人类那样“思考”的机器一直是研究人员的一大目标.在过去几年,计算机科学家们在人工智能(AI)领域已取得了 ...
- C#开源系统大汇总(个人收藏)
C#开源系统大汇总 一.AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖 ...
- C#开源资源大汇总
C#开源资源大汇总 C#开源资源大汇总 一.AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行 ...
- 使用 LoRA 和 Hugging Face 高效训练大语言模型
在本文中,我们将展示如何使用 大语言模型低秩适配 (Low-Rank Adaptation of Large Language Models,LoRA) 技术在单 GPU 上微调 110 亿参数的 F ...
- zz独家专访AI大神贾扬清:我为什么选择加入阿里巴巴?
独家专访AI大神贾扬清:我为什么选择加入阿里巴巴? Natalie.Cai 拥有的都是侥幸,失去的都是人生 关注她 5 人赞同了该文章 本文由 「AI前线」原创,原文链接:独家专访AI大神贾扬清:我 ...
- 搭乘“AI大数据”快车,肌肤管家,助力美业数字化发展
经过疫情的发酵,加速推动各行各业进入数据时代的步伐.美业,一个通过自身技术.产品让用户变美的行业,在AI大数据的加持下表现尤为突出. 对于美妆护肤企业来说,一边是进入存量市场,一边是疫后的复苏期,一边 ...
- Hugging News #0324: 🤖️ 黑客松结果揭晓、一键部署谷歌最新大语言模型、Gradio 新版发布,更新超多!
每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...
- 最新版本 Stable Diffusion 开源 AI 绘画工具之汉化篇
目录 汉化预览 下载汉化插件一 下载汉化插件二 下载汉化插件三 开启汉化 汉化预览 在上一篇文章中,我们安装好了 Stable Diffusion 开源 AI 绘画工具 但是整个页面都是英文版的,对于 ...
随机推荐
- 【Jmeter】性能测试--EMQ X 压测
一.业务背景 开发人员需要验证 EMQ X 性能参数,我选用了 Jmeter 进行测试,测试其连接数.发布订阅数据指标 二.测试环境搭建 1. Jmeter 2. Jmeter 插件:需要自行从插件管 ...
- C++ Qt开发:QUdpSocket网络通信组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QUd ...
- KingbaseES查找慢查询语句和阻塞会话
在处理数据库性能问题时,识别和分析慢查询及阻塞会话是至关重要的步骤.数据库管理员和开发人员常常需要依赖特定的工具和查询语句来追踪这些性能瓶颈. 当数据库响应变慢或出现处理延迟时,第一步通常是查找那些执 ...
- KingbaseES 配置root.sh实现数据库服务开机自启动
案例说明: KingbaseES数据库在部署完成后,支持数据库服务开机自启动,部署完成后,root用户(Linux)执行安装软件目录下的root.sh脚本后,可以实现数据库服务开机自启动. 适用版本: ...
- Python实现结巴分词统计高频中文词汇
代码 1 # 读取文件 2 fn = open('youxi.txt', 'rt', encoding='utf-8') # 打开文件 3 string_data = fn.read() # 读出整个 ...
- Jmeter线程组-上
线程组 线程组作为JMeter测试计划的核心组件之一,对于模拟并发用户的行为至关重要.线程组元件是整个测试计划的入口,所有的取样器和控制器必须放置在线程组下. 可以将线程组视为一个虚拟用户池,其中每个 ...
- #RMQ,动态开点线段树#CF803G Periodic RMQ Problem
题目 给定\(n\)个数,将这个数列复制\(k\)次得到数列\(a\), 对\(a\)满足区间赋值操作和区间最小值询问 \(n\leq 10^5,q\leq 10^5,k\leq 10^4即|a|\l ...
- #trie,动态规划#洛谷 2292 [HNOI2004]L语言
题目 分析 建一棵trie,然后匹配最长前缀可以用\(dp\)做, 如果这个位置可以被匹配到那么可以从这个位置继续匹配 代码 #include <cstdio> #include < ...
- 黄吉:如何适配OpenHarmony自有音频框架ADM?
编者按:在 OpenHarmony 生态发展过程中,涌现了大批优秀的代码贡献者,本专题旨在表彰贡献.分享经验,文中内容来自嘉宾访谈,不代表 OpenHarmony 工作委员会观点. 黄吉 中国科学院软 ...
- Jchardet——支持检测并输出文件编码方式的组件
简介 Jchardet是OpenAtom OpenHarmony(以下简称"OpenHarmony")系统的一款检测文本编码的组件.当上传一个文件时,组件可以检测并输出该文件中 ...