【LocalAI】(10):在autodl上编译embeddings.cpp项目,转换bge-base-zh-v1.5模型成ggml格式,本地运行main成功

news2024/11/19 17:34:08

1,关于 localai

LocalAI 是一个用于本地推理的,与 OpenAI API 规范兼容的 REST API。
它允许您在本地使用消费级硬件运行 LLM(不仅如此),支持与 ggml 格式兼容的多个模型系列。支持CPU硬件/GPU硬件。

在这里插入图片描述

【LocalAI】(10):在autodl上编译embeddings.cpp项目,转换bge-base-zh-v1.5模型成ggml格式,本地运行main成功

2,关于embeddings.cpp项目

这个是localai 执行 embedding 模型的后台服务。
但是有个问题,不支持 bge的大模型。

只能运行 bert-embeddings 的大模型,而bge的模型不支持。

配置文件:

## 使用bge 大模型:
## https://localai.io/features/embeddings/
## https://www.modelscope.cn/models/flyiot/bge-base-zh-v1.5-ggml/summary

name: text-embedding-ada-002
backend: bert-embeddings
parameters:
  model: bge-base-zh-v1.5-ggml-model-q4_0.bin

usage: |
    You can test this model with curl like this:

    curl http://localhost:8080/embeddings -X POST -H "Content-Type: application/json" -d '{
      "input": "Your text string goes here",
      "model": "text-embedding-ada-002"
    }'

download_files:
- filename: "bge-base-zh-v1.5-ggml-model-q4_0.bin"
  sha256: "da4d976e3988977ec4d9fde6653a8fe954b71a0c502c30eda6f84234556cde54"
  uri: "https://www.modelscope.cn/api/v1/models/flyiot/bge-base-zh-v1.5-ggml/repo?Revision=master&FilePath=ggml-model-q4_0.bin"

比如运行:

5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr runtime.goexit({})
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr 	/root/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.2.linux-amd64/src/runtime/asm_amd64.s:1695 +0x1 fp=0xc00011cfe8 sp=0xc00011cfe0 pc=0x4756c1
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr created by google.golang.org/grpc.(*Server).handleRawConn in goroutine 19
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr 	/root/go/pkg/mod/google.golang.org/grpc@v1.59.0/server.go:919 +0x15b
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr 
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr rax    0x0
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr rbx    0x7f710a337640
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr rcx    0x7f7151e669fc
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr rdx    0x6
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr rdi    0x23
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr rsi    0x26
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr rbp    0x26
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr rsp    0x7f710a336700
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr r8     0x7f710a3367d0
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr r9     0x7f710a336310
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr r10    0x8
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr r11    0x246
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr r12    0x6
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr r13    0x16
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr r14    0x21
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr r15    0x7f71004bce40
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr rip    0x7f7151e669fc
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr rflags 0x246
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr cs     0x33
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr fs     0x0
5:39AM DBG GRPC(bge-base-zh-v1.5-ggml-model-q4_0.bin-127.0.0.1:41571): stderr gs     0x0
5:39AM ERR Server error error="could not load model: rpc error: code = Unavailable desc = error reading from server: EOF" ip=172.17.0.1 latency=2.089992731s method=POST status=500 url=/v1/embeddings
5:40AM INF Success ip=127.0.0.1 latency="63.617µs" method=GET status=200 url=/readyz


结果报错了。

3,可以编译embeddings.cpp 执行bge 大模型

项目地址:
https://github.com/xyzhang626/embeddings.cpp
下载项目:
https://hf-mirror.com/BAAI/bge-base-zh-v1.5


#然后进行编译:
git clone --recursive https://github.com/xyzhang626/embeddings.cpp.git

cd embeddings.cpp
mkdir build
cd build
cmake .. -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release
make

cd models
python download-repo.py BAAI/bge-base-zh-v1.5
sh run_conversions.sh bge-base-zh-v1.5

#运行main
cd ..
./build/bin/main -m ./models/bge-base-zh-v1.5/ggml-model-q4_0.bin

然后就而可以运行成功啦。使用的autodl的环境。

4,总结

LocalAI的项目里面的embedding 是 bert embedding.
不支持BGE 模型,有大神给改造支持了BGE的模型了。

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

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

相关文章

【算法小白周赛1A】分析 - 题解与代码

题目链接:https://www.starrycoding.com/problem/155 题目描述 小可可最近在学数学运算!他希望考考你,给你两个整数 A , B A,B A,B,询问 A B A\times B AB 是否是偶数。 注意,可能存在前导 0 0 0,比如…

【C++】:日期类的实现 -- 日期计算器

前言 1.日期类是一种十分经典的类型。对于C的初学者,它能够帮助我们融会贯通许多C的基础知识,它涉及许多的基础语法,比如引用,函数重载,传值/传参返回,构造函数,运算符重载,const成…

Python 与 TensorFlow2 生成式 AI(五)

原文:zh.annas-archive.org/md5/d06d282ea0d9c23c57f0ce31225acf76 译者:飞龙 协议:CC BY-NC-SA 4.0 第十二章:用生成式人工智能玩视频游戏:GAIL 在之前的章节中,我们已经看到如何使用生成式人工智能来生成…

如何在Linux上安装Python?2024Python安装教程

在Linux上安装Python并不难,对于Ubuntu或Debian系统,使用命令sudo apt install python3;对于CentOS、Red Hat或Fedora系统,使用命令sudo yum install python3。 如何在Linux上安装Python? 确切的安装步骤有所不同&am…

Django后台项目开发实战七

为后台管理系统换风格 第七阶段 安装皮肤包 pip install django-grappelli 在 setting.py 注册 INSTALLED_APPS [grappelli,django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.stat…

微隔离实施五步法,让安全防护转起来

前言 零信任的最核心原则→最小权限 安全的第一性原理→预防 零信任的最佳实践→微隔离 “零信任”这个术语的正式出现,公认是在2010年由Forrester分析师John Kindervag最早提出。时至今日,“零信任”俨然已成安全领域最热门的词汇,做安全…

如何使用Go语言进行并发安全的数据访问?

文章目录 并发安全问题的原因解决方案1. 使用互斥锁(Mutex)示例代码: 2. 使用原子操作(Atomic Operations)示例代码: 3. 使用通道(Channels) 在Go语言中,进行并发编程是常…

《QT实用小工具·四十九》QT开发的轮播图

1、概述 源码放在文章末尾 该项目实现了界面轮播图的效果,包含如下特点: 左右轮播 鼠标悬浮切换,无需点击 自动定时轮播 自动裁剪和缩放不同尺寸图片 任意添加、插入、删除 单击事件,支持索引和自定义文本 界面美观,圆…

遥感雷达波段的原理及应用

雷达波段是不同波长的组。每一种都有其独特的穿透地球表面的能力。它们还可以揭示环境的不同方面。 雷达频段在电磁频谱内具有特定的频率范围。这些波段由 L-、S-、C- 和 X-波段等字母表示。稍后会详细介绍这一点。 什么是合成孔径雷达? 合成孔径雷达 (SAR) 是一…

C语言实验-循环结构和选择结构

一&#xff1a; 求和:1(14)(149)(14916)…(14916…n2)? 其中n的值由键盘输入&#xff1b; #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>int main() {int sum 0;int n 0;printf("请输入一个整数");scanf("%d", &n);for (int i 0; i &l…

MATLAB 字符串

MATLAB 字符串 在MATLAB中创建字符串非常简单。实际上&#xff0c;我们已经使用了很多次。例如&#xff0c;您在命令提示符下键入以下内容- 示例 my_string ‘(cainiaojc.com)’ MATLAB将执行上述语句并返回以下结果 my_string (cainiaojc.com) MATLAB将所有变量视为数组&a…

Python基础学习之记录中间文件

倘若想记录代码运行过程中的结果文件&#xff0c;那么以下函数仅供参考 代码示例&#xff1a; import os import datetime import sys import pandas as pd# 定义总的文件夹路径 base_folder E:\\D\\log\\product_data_compare_log# 定义一个函数来创建带时间戳的文件夹 def…

特征提取(Feature Extraction)常见统计特征笔记(三)

统计特征是描述数据集中值的一组量&#xff0c;通常用于了解数据的分布、集中趋势和变异程度。常见的统计特征包括均值、中位数、众数、标准差、方差等。下面会详细解释每个统计特征&#xff0c;并给出相应的Python代码。 1、均值&#xff08;Mean&#xff09;&#xff1a;所有…

【团体程序设计天梯赛】往年关键真题 L2-036 网红点打卡攻略 模拟 L2-037 包装机 栈和队列 详细分析完整AC代码

【团体程序设计天梯赛 往年关键真题 详细分析&完整AC代码】搞懂了赛场上拿下就稳 【团体程序设计天梯赛 往年关键真题 25分题合集 详细分析&完整AC代码】&#xff08;L2-001 - L2-024&#xff09;搞懂了赛场上拿下就稳了 【团体程序设计天梯赛 往年关键真题 25分题合…

【webrtc】MessageHandler 4: 基于线程的消息处理:以Fake 收发包模拟为例

G:\CDN\rtcCli\m98\src\media\base\fake_network_interface.h// Fake NetworkInterface that sends/receives RTP/RTCP packets.虚假的网络接口,用于模拟发送包、接收包单纯仅是处理一个ST_RTP包 消息的id就是ST_RTP 类型,– 然后给到目的地:mediachannel处理: 最后消息消…

沟通是SAP项目成功的关键

我在前面的文章中提到SAP项目并不是传统意义上的IT项目&#xff0c;因为SAP项目实施的不仅仅是一个简单的ERP系统&#xff0c;除了系统之外还有流程再造、组织结构变更、用户培训等。在实施过程中有很多部门都要参与进来讨论和做决定&#xff0c;有很多问题和冲突需要解决。从关…

LangChain入门2 RAG详解

RAG概述 一个典型的RAG应用程序,它有两个主要组件&#xff1a; 索引&#xff1a;从源中获取数据并对其进行索引的管道。这通常在脱机情况下发生。检索和生成&#xff1a;在运行时接受用户查询&#xff0c;并从索引中检索相关数据&#xff0c;然后将其传递给模型。 从原始数据…

透明加密的解释及意义,透明加密软件有哪些?

一、什么是透明加密及意义 透明数据加密&#xff08;Transparent Data Encryption (简称TDE)&#xff09;是指可以在文件层对数据和文件进行实时加密和解密&#xff0c;落盘的文件是加密后的内容&#xff0c;而对于上层应用系统和开发人员而言&#xff0c;加解密过程是无感知的…

Python_GUI框架 PyQt 与 Pyside6的介绍

Python_GUI框架 PyQt 与 Pyside6的介绍 一、简介 在Python的GUI&#xff08;图形用户界面&#xff09;开发领域&#xff0c;PyQt和PySide6是两个非常重要的工具包。它们都基于Qt库&#xff0c;为Python开发者提供了丰富的GUI组件和强大的功能。当然Python也有一些其他的GUI工…

Python 绘图边缘留白问题解决方案 / plt.savefig / plt.subplots_adjust 函数简析

文章目录 Part.I IntroductionPart.II 解决方案Chap.I plt.savefigChap.II plt.subplots_adjustChap.III plt.margins Part.III 探索历程Chap.I 默认保存方式Chap.II 使用 bbox_inches 参数控制Chap.III 自定义留白 Reference Part.I Introduction Python 绘图默认保存&#x…