Prompt 语宙Prompt 语宙
  • 首页
  • AIGC 资讯
    • AIGC 早报Hot
    • 最新趋势
    • AI 工具
    • 热门资源
  • AI 绘图
    • Prompt 实战
    • AI 绘画教程
    • 模型精选
  • 强化 AI 学习
  • AI 图库
    • 人物
    • 展台场景
    • Banner
    • 游戏
    • 动物
    • 食物
    • 自然
    • 背景
    • 海报
    • 建筑
    • 室内设计
  • Remaker AI
    • Free Image Splitter
    • AIGC 工具
    • Prompt 咒语生成器
  • 社区
    • 知识星球
    • 公众号
Search
  • Contact
  • Blog
  • Complaint
  • Advertise
© 2024 Prompt 语宙. HalfPX. All Rights Reserved.
阅读: 在本地运行 Mixtral 8×7 与 LlamaIndex [译]
Share
登陆
通知 阅读更多
Font Resizer字体
Font Resizer字体
Prompt 语宙Prompt 语宙
Search
  • 首页
  • AIGC 资讯
    • AIGC 早报Hot
    • 最新趋势
    • AI 工具
    • 热门资源
  • AI 绘图
    • Prompt 实战
    • AI 绘画教程
    • 模型精选
  • 强化 AI 学习
  • AI 图库
    • 人物
    • 展台场景
    • Banner
    • 游戏
    • 动物
    • 食物
    • 自然
    • 背景
    • 海报
    • 建筑
    • 室内设计
  • Remaker AI
    • Free Image Splitter
    • AIGC 工具
    • Prompt 咒语生成器
  • 社区
    • 知识星球
    • 公众号
已有帐户? 登陆
  • Contact
  • Blog
  • Complaint
  • Advertise
© 2023 Prompt 语宙. Paooo.com. All Rights Reserved.
Prompt 语宙 > 强化 AI 学习 > 在本地运行 Mixtral 8×7 与 LlamaIndex [译]
强化 AI 学习

在本地运行 Mixtral 8×7 与 LlamaIndex [译]

宝玉的分享
最近更新: 2024年4月3日 下午12:17
SHARE

你可能已经听说了来自欧洲 AI 领头羊 Mistral AI 的最新大作——Mixtral 8x7b。这是一个包含八个各自拥有 70 亿参数的“专家混合”模型,名字中的“8×7”正是由此而来。它最初通过一条引人注目的 推文 首次亮相,紧接着几天后他们发布了一篇 博客文章,展示了该模型在多项基准测试中与 GPT-3.5 一较高下,甚至在某些方面超越了体量更大的 Llama2 70b。

阅读目录
步骤 1:安装 Ollama步骤 2:安装依赖项步骤 3:基本功能测试第 4 步:加载并索引数据验证索引的有效性构建小型网络服务完成!

在 LlamaIndex,我们是开源软件的忠实支持者,因此像 Mixtral 这样开放的模型和具有灵活授权的项目正合我们心意。我们收到了不少关于如何将 Mixtral 与 LlamaIndex 结合使用的咨询,因此本文将指导你如何在本地完全独立地运行这一模型。

步骤 1:安装 Ollama

过去,在本地安装并运行模型是一件相当复杂的事,但随着 Ollama 的推出,这一切变得简单多了!Ollama 支持 MacOS 和 Linux 系统(Windows 版本也即将推出,不过目前你可以通过 Windows Subsystem For Linux 在 Windows 上使用)。Ollama 是开源软件,并提供了 免费下载。

下载完成后,你可以通过一个简单的命令来安装 Mixtral:

ollama run mixtral

首次运行此命令时,需要下载模型,这可能会花费一些时间,你可以利用这段时间休息一下。需要注意的是,运行它需要高达 48GB 的 RAM!如果你的电脑配置达不到这个要求,你可以考虑使用性能稍逊但依然强大的 Mistral 7b,其安装和运行方式与 Mixtral 相同:

ollama run mistral

本教程假设你使用 Mixtral,不过 Mistral 也同样适用。

一旦模型启动,Ollama 会自动允许你与其进行交互。这本身很有趣,但我们的目标不仅仅是与模型聊天,而是要让它能够处理你的数据。这就是 LlamaIndex 发挥作用的地方。接下来的步骤将带你逐行了解相关代码,不过如果你不想手动复制粘贴,可以直接访问这个 开源仓库,里面有完整的代码,你可以克隆后跟着做。

步骤 2:安装依赖项

首先,你需要安装 LlamaIndex。除此之外,我们还会介绍一些即将派上用场的其他依赖项:

pip install llama-index qdrant_client torch transformers

步骤 3:基本功能测试

如果你已经成功运行 Ollama 并正确安装了 LlamaIndex,下面这个简单的脚本可以通过执行一个基本功能测试来确认一切是否正常。这个测试是一个独立的脚本:

## Just runs .complete to make sure the LLM is listening
from llama_index.llms import Ollama
llm = Ollama(model="mixtral")
response = llm.complete("Who is Laurie Voss?")
print(response)

第 4 步:加载并索引数据

现在你可以开始加载一些实际的数据了。你可以使用任意数据,在此例中,我用的是我自己的一些推文集合,你也可以下载使用或者用自己的数据。我们将使用高效的开源向量数据库 Qdrant(Qdrant)来存储数据,这就是我们之前让你安装它的原因。请创建一个新的 python 文件,并导入所有必要的依赖项:

from pathlib import Path
import qdrant_client
from llama_index import(
VectorStoreIndex,
ServiceContext,
download_loader,
)
from llama_index.llms import Ollama
from llama_index.storage.storage_context import StorageContext
from llama_index.vector_stores.qdrant import QdrantVectorStore

接下来,利用 LlamaHub提供的一个实用的 JSONReader 从 JSON 文件中读取推文。这会生成一系列准备嵌入和索引的文档:

JSONReader = download_loader("JSONReader")
loader = JSONReader()
documents = loader.load_data(Path('./data/tinytweets.json'))

为了让 Qdrant 进入工作状态,我们需要初始化它,并将其加入到我们稍后要使用的存储上下文中:

client = qdrant_client.QdrantClient(
path="./qdrant_data"
)
vector_store = QdrantVectorStore(client=client, collection_name="tweets")
storage_context = StorageContext.from_defaults(vector_store=vector_store)

现在,我们来设置服务上下文。我们会使用 Mixtral 作为大语言模型(LLM)进行测试,以确保在我们完成索引后一切正常;实际的索引过程并不需要用到 Mixtral。通过设置 embed_model="local",我们让 LlamaIndex 在本地处理数据嵌入,这就是为何你需要安装 torch 和 transformers。

llm = Ollama(model="mixtral")
service_context = ServiceContext.from_defaults(llm=llm,embed_model="local")

最后,把这一切结合起来:利用你已经准备好的服务和存储上下文,从加载的文档中构建索引,并进行一次查询:

index = VectorStoreIndex.from_documents(documents,service_context=service_context,storage_context=storage_context)
query_engine = index.as_query_engine()
response = query_engine.query("What does the author think about Star Trek? Give details.")
print(response)

Ollama 在处理查询时需要启动 Mixtral,这可能需要一些时间,请耐心等待。你最终应该会得到类似这样的输出(但内容会更丰富):

Based on the provided context information, the author has a mixed opinion about Star Trek.

验证索引的有效性

现在,为了证明这不只是表面功夫,我们将使用我们预先建立的索引。创建一个新的 Python 文件并重新加载必要的依赖项:

import qdrant_client
from llama_index import(
VectorStoreIndex,
ServiceContext,
)
from llama_index.llms import Ollama
from llama_index.vector_stores.qdrant import QdrantVectorStore

这一次我们无需再次加载数据,因为这已经完成了!我们需要的是 Qdrant 客户端和 Mixtral:

client = qdrant_client.QdrantClient(
path="./qdrant_data"
)
vector_store = QdrantVectorStore(client=client, collection_name="tweets")
llm = Ollama(model="mixtral")
service_context = ServiceContext.from_defaults(llm=llm,embed_model="local")

这次我们不是从文档中创建索引,而是直接从向量存储中使用 from_vector_store 命令加载它。我们还向查询引擎传递了 similarity_top_k=20 参数;这意味着它会一次性获取 20 条推文(默认是 2 条),从而提供更多的上下文,以便更准确地回答问题。

index = VectorStoreIndex.from_vector_store(vector_store=vector_store,service_context=service_context)
query_engine = index.as_query_engine(similarity_top_k=20)
response = query_engine.query("Does the author like SQL? Give details.")
print(response)

构建小型网络服务

仅仅拥有一个脚本形式运行的索引是不够的!我们将把它转换成一个 API。这需要引入两个新的依赖项:

pip install flask flask-cors

按照之前的方法在新文件中加载依赖项:

from flask import Flask, request, jsonify
from flask_cors import CORS, cross_origin
import qdrant_client
from llama_index.llms import Ollama
from llama_index import(
VectorStoreIndex,
ServiceContext,
)
from llama_index.vector_stores.qdrant import QdrantVectorStore

然后加载向量存储、大语言模型(LLM)和索引:

# re-initialize the vector store
client = qdrant_client.QdrantClient(
path="./qdrant_data"
)
vector_store = QdrantVectorStore(client=client, collection_name="tweets")
# get the LLM again
llm = Ollama(model="mixtral")
service_context = ServiceContext.from_defaults(llm=llm,embed_model="local")
# load the index from the vector store
index = VectorStoreIndex.from_vector_store(vector_store=vector_store,service_context=service_context)

接着,设置一个基础的 Flask 服务器:

app = Flask(__name__)
cors = CORS(app)
app.config['CORS_HEADERS']='Content-Type'
# This is just so you can easily tell the app is running
@app.route('/')
defhello_world():
return'Hello, World!'

添加一个路由,它能接收查询(以表单数据形式)、通过大语言模型处理查询并返回结果:

@app.route('/process_form', methods=['POST'])
@cross_origin()
defprocess_form():
query = request.form.get('query')
if query isnotNone:
query_engine = index.as_query_engine(similarity_top_k=20)
response = query_engine.query(query)
return jsonify({"response":str(response)})
else:
return jsonify({"error":"query field is missing"}),400
if __name__ =='__main__':
app.run()

注意最后两行代码,它们非常关键!由于 flask run 命令与 LlamaIndex 加载依赖的方式不兼容,因此你需要像这样直接运行你的 API(假设你的文件命名为 app.py)

python app.py

当你的 API 启动后,你可以使用 cURL 来发送请求并进行验证:

curl --location '<http://127.0.0.1:5000/process_form>' \--form 'query="What does the author think about Star Trek?"'

完成!

我们在本教程中涉及了以下几个方面:

  • 如何在本地运行 Mixtral
  • 使用 LlamaIndex 查询 Mixtral 8x7b
  • 利用 Qdrant 向量存储来构建和查询数据索引
  • 将索引封装成一个非常简单的网络 API
  • 所有这些都是开源、免费,并且可以在本地运行的!

希望这是一个简单有趣的引导,帮助你学会如何使用 LlamaIndex 在本地运行模型!

Google 真正的“登月项目”(Moonshot) [译]
什么是 GPT?通过图形化的方式来理解 Transformer 架构 [译]
大语言模型 API 市场的变迁之路 [译]
为什么随着年龄增长,我们感觉时间似乎流逝得更快 [译]
我们将 10% 的资源投入偿还技术债务;这是我们的收获 [译]
分享
Email 复制链接 打印
Share
上一篇 从左至右为:Robert MacKnight、Gabe Gomes、Daniil Boiko。图片来源:卡内基梅隆大学 认识“Coscientist”,你的 AI 实验室伙伴 [译]
下一篇 iPhone 上运行的 ChatGPT 应用。 为何有科学家不用 ChatGPT?他们这样说 [译]
发表评价

发表评价 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Please select a rating!

Ad image
- 入群领取知识星球折扣卷, 仅剩99份 -
Ad imageAd image

最近更新

LLM(机器学习)职位面试(2024年秋季)——流程回顾 [译]
强化 AI 学习
Claude 3.7 Sonnet 和 Claude Code 【译】
强化 AI 学习
请求“不”,而非请求“是”
强化 AI 学习
你无法用 AI 建立护城河 [译]
强化 AI 学习

相关推荐

性能
强化 AI 学习

微服务的“死亡千刃” [译]

宝玉的分享
强化 AI 学习

构建软件项目最难的部分不是编码而是需求 [译]

宝玉的分享
强化 AI 学习

现代大语言模型应用架构 [译]

宝玉的分享
参考图注
强化 AI 学习

FireAct:推进语言智能体的微调 [译]

宝玉的分享
/ Prompt 语宙 /

Experience the limitless creative possibilities of generative AI and unlock new levels of innovation.

Quick Link

  • Remaker AI
  • BGRemaker 抠图Hot
  • AIGC 工具
  • Prompt 咒语生成器
  • 去水印工具

Support

  • Contact
  • Blog
  • Complaint
  • Advertise

标签

3D AI AIGC AI人像 AI创作小助手 AI工具 AI换脸 AI海报设计 AI生成视频 AI绘画 AI视频 AI设计 app图标 chatgpt DALL-E3 excel GPT meta Midjourney openai Pika prompt runway SDXL stable diffusion UI设计 专业 丛林 乐高 人像 人物 光晕 动物 吉卜力 咒语 图标设计 圣诞 壁纸 女性 奶牛 实验室 宠物 客厅 室内设计 家居 局部重绘 展台 山景 帅哥 建筑 建筑设计 影谱科技 微摄影 怪物 提示词 摄影 教程 新闻 日本排放核污水 早报 星光 枯木 植物 模特 水果 泳池 海报 海报设计 清华大学 温馨的家 游戏 游戏美术 炫光 炫彩 玻璃 白茶花 矢量插画 研究报告 破碎 科幻 穿搭 窗 美食 背景 节日 芭比 花 花卉 茶园一角 草原 荷兰奶源 表情包 赛博朋克 超现实主义 软件 运动 金毛 风景 食物 香水
Prompt 语宙Prompt 语宙
Follow US
© 2009-2023 Prompt 语宙. Paooo.com. All Rights Reserved.
Welcome Back!

Sign in to your account

Username or Email Address
Password

忘记密码