ModelCache 项目介绍
项目概述
ModelCache 是一个专为大型语言模型(LLMs)设计的语义缓存系统。它通过缓存预生成的模型结果,减少相似请求的响应时间,从而提升用户体验。该项目的目标是通过引入缓存机制来优化服务,帮助企业和研究机构降低推理部署成本,提高模型性能和效率,并为大模型提供可扩展的服务。作为一个开源项目,ModelCache 旨在分享和交流关于大模型语义缓存的相关技术。
快速部署
ModelCache 项目的启动脚本包括 flask4modelcache.py
和 flask4modelcache_demo.py
两种。其中 flask4modelcache_demo.py
是一个嵌入了 sqlite 和 faiss 的快速测试服务,用户无需担心数据库相关的事项。而 flask4modelcache.py
是需要配置 MySQL 和 Milvus 数据库服务的正常服务。
依赖环境
- Python版本:3.8及以上
- 包安装
pip install -r requirements.txt
服务启动
演示服务启动
- 从此地址下载嵌入模型的 bin 文件,并将其放在
model/text2vec-base-chinese
文件夹中。 - 使用
flask4modelcache_demo.py
启动后台服务。cd CodeFuse-ModelCache
python flask4modelcache_demo.py
正式服务启动
在启动服务之前,需要进行以下环境配置:
- 安装关系型数据库 MySQL,并导入 SQL 文件以创建数据表,SQL 文件在
reference_doc/create_table.sql
中。 - 安装向量数据库 Milvus。
- 在配置文件中添加数据库访问信息:
modelcache/config/milvus_config.ini
modelcache/config/mysql_config.ini
- 下载嵌入模型的 bin 文件并按照上一步的方法放置。
- 使用
flask4modelcache.py
启动后台服务。
服务访问
当前服务通过 RESTful API 提供三项核心功能:缓存写入、缓存查询和缓存清除。
缓存写入示例
import json
import requests
url = 'http://127.0.0.1:5000/modelcache'
type = 'insert'
scope = {"model": "CODEGPT-1008"}
chat_info = [{"query": [{"role": "system", "content": "You are an AI code assistant and you must provide neutral and harmless answers to help users solve code-related problems."}, {"role": "user", "content": "你是谁?"}],
"answer": "Hello, I am an intelligent assistant. How can I assist you?"}]
data = {'type': type, 'scope': scope, 'chat_info': chat_info}
headers = {"Content-Type": "application/json"}
res = requests.post(url, headers=headers, json=json.dumps(data))
缓存查询示例
import json
import requests
url = 'http://127.0.0.1:5000/modelcache'
type = 'query'
scope = {"model": "CODEGPT-1008"}
query = [{"role": "system", "content": "You are an AI code assistant and you must provide neutral and harmless answers to help users solve code-related problems."}, {"role": "user", "content": "Who are you?"}]
data = {'type': type, 'scope': scope, 'query': query}
headers = {"Content-Type": "application/json"}
res = requests.post(url, headers=headers, json=json.dumps(data))
缓存清除示例
import json
import requests
url = 'http://127.0.0.1:5000/modelcache'
type = 'remove'
scope = {"model": "CODEGPT-1008"}
remove_type = 'truncate_by_model'
data = {'type': type, 'scope': scope, 'remove_type': remove_type}
headers = {"Content-Type": "application/json"}
res = requests.post(url, headers=headers, json=json.dumps(data))
核心功能
ModelCache 继承了 GPTCache 的核心思想,主要模块包括:适配器、嵌入、相似性和数据管理。适配器模块负责处理各项任务的业务逻辑,并连接嵌入、相似性和数据管理模块。嵌入模块主要负责将文本转化为语义向量表征,将用户查询转化为向量形式。排名模块用于对召回的向量进行排序和相似度评估。数据管理模块则主要用于数据库的管理。
为了更好地服务于工业应用,进行了以下架构和功能升级:
- 类似于 Redis 的模型嵌入,提供语义缓存能力,不干扰 LLM 调用和安全审核。
- 多种模型加载方案,以解决 Hugging Face 网络连接问题,并支持本地加载及多种预训练模型的嵌入层。
- 数据隔离能力,支持多租户场景下的环境和数据隔离。
- 系统命令支持,通过串接方法解决系统命令中的提示格式问题。
- 长短文本区分,以应对长文本带来的相似度评估挑战。
- Milvus 性能优化,提升数据管理能力及缓存清理、数据分析、日志回写等功能。
结语
ModelCache 通过对大模型的实现加以优化,提升了服务的效率和可扩展性,是一个极具吸引力和价值的项目。无论是经验丰富的开发者还是刚入门的新手,大家对该项目的贡献都将受到热烈的欢迎和感谢。贡献方式包括提出问题、提供建议、编写代码、撰写文档或创建示例等,这将提升项目质量,并对开源社区做出重大贡献。