LLM--打造Private GPT需要知道的一些概念及术语

文章目录

  • 大模型存储格式
    • GGML
    • GGUF
  • Embedding
    • 概念
    • 分类
  • 术语
    • Llamaindex
    • LlamaCPP
    • Poetry
    • ASGI
    • FastAPI
    • Chroma
    • Qdrant
    • gradio
    • MRL

大模型存储格式

大模型的存储一个很重要的问题是它的模型文件巨大,而模型的结构、参数等也会影响模型的推理效果和性能,为了让大模型更加高效的存储和交换,就有了不同格式的大模型文件。

GGML

  • GGML (GPT-Generated Model Language): Developed by Georgi Gerganov, GGML is a tensor library designed for machine learning, facilitating large models and high performance on various hardware, including Apple Silicon.

  • Pros

    • Early Innovation: GGML represented an early attempt to create a file format for GPT models.

    • Single File Sharing: It enabled sharing models in a single file, enhancing convenience.

    • CPU Compatibility: GGML models could run on CPUs, broadening accessibility.

  • Cons

    • Limited Flexibility: GGML struggled with adding extra information about the model.
    • Compatibility Issues: Introduction of new features often led to compatibility problems with older models.
    • Manual Adjustments Required: Users frequently had to modify settings like rope-freq-base, rope-freq-scale, gqa, and rms-norm-eps, which could be complex.

GGUF

GGUF (GPT-Generated Unified Format), introduced as a successor to GGML (GPT-Generated Model Language), was released on the 21st of August, 2023. This format represents a significant step forward in the field of language model file formats, facilitating enhanced storage and processing of large language models like GPT.

  • Pros

    • Addresses GGML Limitations: GGUF is designed to overcome GGML’s shortcomings and enhance user experience.
    • Extensibility: It allows for the addition of new features while maintaining compatibility with older models.
    • Stability: GGUF focuses on eliminating breaking changes, easing the transition to newer versions.
    • Versatility: Supports various models, extending beyond the scope of llama models.
  • Cons

    • Transition Time: Converting existing models to GGUF may require significant time.
    • Adaptation Required: Users and developers must become accustomed to this new format.

Embedding

概念

Embedding 嵌入是一种机器学习概念,用于将数据映射到高维空间中,在高维空间中,相似语义的数据被放置在一起
Embedding Model 【嵌入模型】

  • 通常是来自BERT或其他Transformer家族的深度神经网络
  • 可以用一系列称为向量的数字有效地表示文本、图像和其他数据类型的语义。
  • 关键特征是在高维空间中向量之间的数学距离可以表示原始文本或图像的语义相似性

分类

  • Dense embedding:是一种用于自然语言处理的技术,用于将单词或短语表示为高维空间中的连续、稠密向量,捕获语义关系

    • 大多数嵌入模型将信息表示为数百到数千维的浮点向量。
    • 输出: 稠密向量,因为大多数维度具有非零值。
    • 如 流行的开源嵌入模型BAAI/ big -base-en-v1.5输出768个浮点数的向量(768维浮点向量)。
  • Sparse embedding:使用大多数元素为零的向量表示单词或短语,只有一个非零元素表示词汇表中特定单词的存在。它是高效和可解释的,使它们适合于精确的术语匹配相关的任务

    • 通常具有更高的维度(数万或更多),这取决于token vocabulary【词汇表】的大小
    • 输出: 稀疏向量,因为大多数维度的值是0。
    • 通过如下两种方式生成:
      • 通过深度神经网络生成
      • 通过对文本语料库的统计分析生成
    • 由于其可解释性和更好的域外泛化能力,稀疏嵌入越来越多地被开发人员采用,作为密集嵌入的补充
  • 常用的Embedding函数

    Embedding FunctionTypeAPI or Open-sourced
    openaiDenseAPI
    sentence-transformerDenseOpen-sourced
    bm25SparseOpen-sourced
    SpladeSparseOpen-sourced
    bge-m3HybridOpen-sourced

术语

Llamaindex

LlamaIndex is the leading data framework for building LLM applications

源码地址

LlamaCPP

LlamaCPP: Inference of Meta’s LLaMA model (and others) in pure C/C++,是一个基于Meta公司的LLaMA模型的纯C/C++版本的推理框架。它主要用于模型推理

主要支持的是Meta公司的LLaMA系列模型,如LLaMA 2、Code Llama、Falcon、Baichuan等。这些模型都是基于LLaMA架构的,并且经过特定的格式转换(如转换为gguf格式)后,才能在LlamaCPP中进行推理。

想要使用LlamaCPP进行模型推理,需要确保你选择的模型是LLaMA系列的,并且已经转换为LlamaCPP所支持的格式

The main goal of llama.cpp is to enable LLM inference with minimal setup and state-of-the-art performance on a wide variety of hardware - locally and in the cloud.

Poetry

PoetryPython packaging and dependency management tool

Poetry可以帮助您声明、管理和安装Python项目的依赖项,确保您在任何地方都有正确的堆栈。

ASGI

ASGI(Asynchronous Server Gateway Interface)是一种 Python 异步 Web 服务器和应用程序之间通信的接口标准。与传统的 WSGI(Web Server Gateway Interface)相比,ASGI 更适用于高并发和实时性要求高的应用程序,例如聊天应用、实时通知、在线游戏等。

  • Django ASGI 是 Django 框架的 ASGI 版本,它允许 Django 应用程序以异步方式处理请求和响应。
  • uvicorn: an ASGI web server implementation for Python.
  • Hypercorn is an ASGI web server based on the sans-io hyper, h11, h2, and wsproto libraries and inspired by Gunicorn. Hypercorn supports HTTP/1, HTTP/2, WebSockets (over HTTP/1 and HTTP/2), ASGI/2, and ASGI/3 specifications. Hypercorn can utilise asyncio, uvloop, or trio worker types.

FastAPI

FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.8+ based on standard Python type hints.

Chroma

Chroma is the open-source embedding database. Chroma makes it easy to build LLM apps by making knowledge, facts, and skills pluggable for LLMs.

Chroma的目标是帮助用户更加便捷地构建大模型应用,更加轻松的将知识(knowledge)、事实(facts)和技能(skills)等我们现实世界中的文档整合进大模型中。

Chroma提供的工具:

  • 存储文档数据和它们的元数据:store embeddings and their metadata
  • 嵌入和查询:embed documents and queries
  • 搜索: search embeddings

Chroma的设计优先考虑:

  • 足够简单并且提升开发者效率:simplicity and developer productivity
  • 搜索之上再分析:analysis on top of search
  • 追求快(性能): it also happens to be very quick

Qdrant

Qdrant一个开源的相似性搜索引擎,专注于高效处理向量数据。它不仅提供了快速的相似性搜索能力,还支持向量的实时插入和删除,使其在实时场景中也能发挥重要作用。其设计旨在解决大规模向量数据检索的问题,例如图像、文本和其他复杂数据类型。

如果调用,参见安装文档

gradio

Gradio is the fastest way to demo your machine learning model with a friendly web interface so that anyone can use it, anywhere!

若要试用,参见quickstart

privategpt安装:https://docs.privategpt.dev/installation/getting-started/installation

MRL

在2024年1月底OpenAI发布新的向量模型,并提到新的向量模型支持将向量维度缩短。向量模型支持缩短维度而又不会威胁到向量的表示能力的原因在于使用了Matryoshka Representation Learning。

MRL名字里的Matryoshka是指俄罗斯套娃,俄罗斯套娃是一系列可以一个套一个的娃娃,所以MRL希望训练好的向量在去掉向量后面的一些维度后仍有表征含义。

Matryoshka Representation Learning (MRL)是2022年发表的论文,由于OpenAI的使用得到了很多关注,论文共同一作甚至写了一篇博客来解释MRL的原理。开源文本向量nomic-embed-text-v1.5 也应用了MRL支持使用时调整向量维度

  1. Matryoshka Representation Learning
  2. 论文作者写的blog
  3. 知乎文章、HN讨论
  4. Nomic 开源的contrastors 实现了对比学习版的MRL

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/784281.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云服务器8核32G配置报价大全,腾讯云、阿里云和京东云

8核32G云服务器租用优惠价格表,云服务器吧yunfuwuqiba.com整理阿里云8核32G服务器、腾讯云8核32G和京东云8C32G云主机配置报价,腾讯云和京东云是轻量应用服务器,阿里云是云服务器ECS: 阿里云8核32G服务器 阿里云8核32G服务器价格…

鸿蒙手机cordova-plugin-camera不能拍照和图片不显示问题

鸿蒙手机cordova-plugin-camera不能拍照和图片不显示问题 一、运行环境 1、硬件 手机型号:NOVA 7 系统:HarmonyOS版本 4.0.0 2、软件 android SDK platforms:14.0(API Level 34)、13.0(API Level 33) SDK Build-T…

TCP长连接与短链接的区别

TCP短连接 在TCP短连接的通信模式中,每次通信都需要经历建立连接、传输数据和断开连接三个阶段。客户端和服务器每进行一次通信交互,就会建立一个新的连接,数据传输完成后立即断开连接。这种模式适用于请求次数不频繁、维持连接的开销大于重…

CentOS系统下Docker的安装教程

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

K8S之Secret的介绍和使用

Secret Secret的介绍Secret的使用通过环境变量引入Secret通过volume挂载Secret Secret的介绍 Secret是一种保护敏感数据的资源对象。例如:密码、token、秘钥等,而不需要把这些敏感数据暴露到镜像或者Pod Spec中。Secret可以以Volume或者环境变量的方式使…

【Linux】TCP网络套接字编程+守护进程

文章目录 日志类(完成TCP/UDP套接字常见连接过程中的日志打印)单进程版本的服务器客户端通信多进程版本和多线程版本守护进程化的多线程服务器 日志类(完成TCP/UDP套接字常见连接过程中的日志打印) 为了让我们的代码更规范化&…

前缀树实现字典添加查询

. - 力扣(LeetCode) Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。 请你实现 T…

车载电子电器架构 —— 诊断数据库开发

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

Python 后端 Flask 使用 Flask-SocketIO、前端 Vue3 实现长连接 Websocket 通信详细教程(更新中)

Flask 安装 Flask-Socketio Flask-SocketIO 第三方库使 Flask 应用程序可以实现客户端和服务器之间的低延迟双向通信。客户端应用程序可以使用 Javascript、Python、C、Java 和 Swift 中的任何 SocketIO 客户端库或任何其他兼容客户端来建立与服务器的永久连接。 Flask-Socke…

价值投资已死,MEME币永生?

BOME和SLERF结束了疯狂拉升,市场再次经历和见证了又一轮暴富「淘金」,尽管MEME的热浪尚未彻底退去,但市场也短暂恢复了一些冷静。 除了感慨 “币圈一天,传统金融一年” 的涨幅和收益之外,不少「老韭菜」都在讨论一个问…

基于微信小程序的自习室预约系统的设计与实现

基于微信小程序的自习室预约系统的设计与实现 文章目录 基于微信小程序的自习室预约系统的设计与实现1、前言介绍2、功能设计3、功能实现4、开发技术简介5、系统物理架构6、系统流程图7、库表设计8、关键代码9、源码获取10、 🎉写在最后 1、前言介绍 伴随着信息技术…

AR-Net网络(图像篡改检测)

AR-Net网络 摘要AbstractAR-Net1. 文献摘要2. 研究背景3. 创新点4. AR-Net 网络架构5. 实验6. 结论总结 摘要 AR-Net使用自适应注意力机制来融合位置和通道维度的特征,使网络能够充分利用不同维度的被篡改特征,此外,AR-Net 改进了预测掩模&a…

民宿预定(源码+文档)

民宿预定系统(小程序、ios、安卓都可部署) 文件包含内容程序简要说明含有功能项目截图客户端注册页学生特权介绍页我的界面登录界面民宿界面推荐房形已完成订单首页邀请好友待支付页全部订单进行中订单 管理端关键字管理用户管理订单管理民宿管理 文件包…

【春秋云镜】CVE-2023-27179靶标Wp

0x01:漏洞点 他的标题已经告诉我们路径在哪里,所以我们直接访问/_admin/imgdownload.php OK啊白白的一片,直接丢Yakit里面去 教训他。 0x02:操作部分 报告长官,一切正常!!未发现连接错误&#…

C语言-malloc(申请函数)free(释放函数)

malloc和free的语法格式 malloc 函数是 C 语言标准库中的一个重要函数,用于动态分配内存。其语法如下: void *malloc(size_t size);这里的 void * 表示返回的是一个 void 类型的指针,实际上这个指针指向的是一个 char 类型的内存块。size_t …

HTTP/1.1 如何优化?(计算机网络)

有三种方法: 第一个思路是,通过缓存技术来避免发送 HTTP 请求。客户端收到第一个请求的响应后,可以将其缓存在本地磁盘,下次请求的时候,如果缓存没过期,就直接读取本地缓存的响应数据。如果缓存过期&#…

GridLayoutManager 中的一些坑

前言 如果GridLayoutManager使用item的布局都是wrap_cotent 那么会在布局更改时会出现一些出人意料的情况。&#xff08;本文完全不具备可读性和说教性&#xff0c;仅为博主方便查找问题&#xff09; 布局item: <!--layout_item.xml--> <?xml version"1.0&qu…

DAY10,DAY11|逆波兰表达式,有效括号,删除字符串中重复项

文章目录 232.用栈实现队列225.用队列实现栈20.有效的括号1047.删除字符串中的所有重复项150.逆波兰表达式 232.用栈实现队列 文档讲解&#xff1a;用栈实现队列 视频链接&#xff1a;代码随想录-用栈实现队列 状态&#xff1a;ok 思路&#xff1a; 用两个栈实现队列操作&…

大模型面试准备(十一):怎样让英文大语言模型可以很好的支持中文?

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学&#xff0c;针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。 合集在这…

设计模式(11):适配器模式

一.什么使适配器模式&#xff1f; 将一个类的接口转换成客户希望的另外一个接口&#xff0c;Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 二.模式中的角色 目标角色(Target)&#xff1a; 客气所期待的接口。目标可以是具体的或抽象的类&#…