搭建企业内部的大语言模型系统

简介: 该内容主要介绍了开源大语言模型及其管理方法。首先对比了商业大模型(如ChatGPT)与支持私有部署的开源大模型(如Mistral、Meta Llama),强调了开源模型在安全和隐私方面的优势。接着详细列出了多种大语言模型管理工具,如HuggingFace、Ollama等,并展示了Ollama的快速部署和使用方法。此外,还介绍了大语言模型的应用前端,包括开源平台Ollama-chatbot、PrivateGPT等,以及它们的具体部署步骤和配置示例。最后提供了非私有OpenAI-powered部署方案及其API调用示例。

大纲

  • 开源大语言模型
  • 大语言模型管理
  • 私有大语言模型服务部署方案

开源大语言模型

担心安全与隐私?可私有部署的开源大模型

  • 商业大模型,不支持私有部署
    • ChatGPT
    • Claude
    • Google Gemini
    • 百度问心一言
  • 开源大模型,支持私有部署
    • Mistral
    • Meta Llama
    • ChatGLM
    • 阿里通义千问

常用开源大模型列表

image.png

开源大模型分支

image.png

大语言模型管理

大语言模型管理工具

  • HuggingFace 全面的大语言模型管理平台
  • Ollama 在本地管理大语言模型,下载速度超快
  • llama.cpp 在本地和云端的各种硬件上以最少的设置和最先进的性能实现 LLM 推理
  • GPT4All 一个免费使用、本地运行、具有隐私意识的聊天机器人。无需 GPU 或互联网

Ollama 速度最快的大语言模型管理工具

image.png

image.png

Ollama 的命令

ollama pull llama2
ollama list
ollama run llama2 "Summarize this file: $(cat README.md)"

ollama serve

curl http://localhost:11434/api/generate -d '{
  "model": "llama2",
  "prompt":"Why is the sky blue?"
}'
curl http://localhost:11434/api/chat -d '{
  "model": "mistral",
  "messages": [
    { "role": "user", "content": "why is the sky blue?" }
  ]
}'

image.png

大语言模型的前端

大语言模型的应用前端

  • 开源平台 ollama-chatbot、PrivateGPT、gradio
  • 开源服务 hugging face TGI、langchain-serve
  • 开源框架 langchain llama-index

#

ollama chatbot

docker run -p 3000:3000 ghcr.io/ivanfioravanti/chatbot-ollama:main
## http://localhost:3000

image.png

ollama chatbot

PrivateGPT

PrivateGPT 提供了一个 API,其中包含构建私有的、上下文感知的 AI 应用程序所需的所有构建块。该 API 遵循并扩展了 OpenAI API 标准,支持普通响应和流响应。这意味着,如果您可以在您的工具之一中使用 OpenAI API,则可以使用您自己的 PrivateGPT API,无需更改代码,并且如果您在本地模式下运行 privateGPT,则免费。

image.png

PrivateGPT 架构

  • FastAPI
  • LLamaIndex
  • 支持本地 LLM,比如 ChatGLM llama Mistral
  • 支持远程 LLM,比如 OpenAI Claud
  • 支持嵌入 embeddings,比如 ollama embeddings-huggingface
  • 支持向量存储,比如 Qdrant, ChromaDB and Postgres

PrivateGPT 环境准备

git clone https://github.com/imartinez/privateGPT
cd privateGPT
#不支持3.11之前的版本
python3.11 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip poetry

#虽然官网只说了要安装少部分的依赖,但是那些依赖管理不是那么完善,容易有遗漏
#所以我们的策略就是全都要。
poetry install --extras "ui llms-llama-cpp llms-openai llms-openai-like llms-ollama llms-sagemaker llms-azopenai embeddings-ollama embeddings-huggingface embeddings-openai embeddings-sagemaker embeddings-azopenai vector-stores-qdrant vector-stores-chroma vector-stores-postgres storage-nodestore-postgres"

#或者用这个安装脚本
#poetry install --extras "$(sed -n '/tool.poetry.extras/,/^$/p'  pyproject.toml | awk -F= 'NR>1{print $1}' | xargs)"

ollama 部署方式

ollama pull mistral
ollama pull nomic-embed-text
ollama serve

#官方这个依赖不够,还需要额外安装torch,所以尽量采用上面提到的全部安装的策略
poetry install --extras "ui llms-ollama embeddings-ollama vector-stores-qdrant"
PGPT_PROFILES=ollama poetry run python -m private_gpt

setting-ollama.yaml

server:
  env_name: ${
   
   APP_ENV:ollama}

llm:
  mode: ollama
  max_new_tokens: 512
  context_window: 3900
  temperature: 0.1 #The temperature of the model. Increasing the temperature will make the model answer more creatively. A value of 0.1 would be more factual. (Default: 0.1)

embedding:
  mode: ollama

ollama:
  llm_model: mistral
  embedding_model: nomic-embed-text
  api_base: http://localhost:11434
  tfs_z: 1.0 ## Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting.
  top_k: 40 ## Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative. (Default: 40)
  top_p: 0.9 ## Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9)
  repeat_last_n: 64 ## Sets how far back for the model to look back to prevent repetition. (Default: 64, 0 = disabled, -1 = num_ctx)
  repeat_penalty: 1.2 ## Sets how strongly to penalize repetitions. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. (Default: 1.1)

vectorstore:
  database: qdrant

qdrant:
  path: local_data/private_gpt/qdrant

启动


PGPT_PROFILES=ollama poetry run python -m private_gpt

poetry run python -m private_gpt
02:36:06.928 [INFO    ] private_gpt.settings.settings_loader - Starting application with profiles=['default', 'ollama']
02:36:46.567 [INFO    ] private_gpt.components.llm.llm_component - Initializing the LLM in mode=ollama
02:36:47.405 [INFO    ] private_gpt.components.embedding.embedding_component - Initializing the embedding model in mode=ollama
02:36:47.414 [INFO    ] llama_index.core.indices.loading - Loading all indices.
02:36:47.571 [INFO    ]         private_gpt.ui.ui - Mounting the gradio UI, at path=/
02:36:47.620 [INFO    ]             uvicorn.error - Started server process [72677]
02:36:47.620 [INFO    ]             uvicorn.error - Waiting for application startup.
02:36:47.620 [INFO    ]             uvicorn.error - Application startup complete.
02:36:47.620 [INFO    ]             uvicorn.error - Uvicorn running on http://0.0.0.0:8001 (Press CTRL+C to quit)

image.png

PrivateGPT UI

local 部署模式


#todo: 需要安装llama-cpp,每个平台的安装方式都不同,参考官方文档

poetry run python scripts/setup
PGPT_PROFILES=local poetry run python -m private_gpt

setting-local.yaml

server:
  env_name: ${
   
   APP_ENV:local}

llm:
  mode: llamacpp
  ## Should be matching the selected model
  max_new_tokens: 512
  context_window: 3900
  tokenizer: mistralai/Mistral-7B-Instruct-v0.2

llamacpp:
  prompt_style: "mistral"
  llm_hf_repo_id: TheBloke/Mistral-7B-Instruct-v0.2-GGUF
  llm_hf_model_file: mistral-7b-instruct-v0.2.Q4_K_M.gguf

embedding:
  mode: huggingface

huggingface:
  embedding_hf_model_name: BAAI/bge-small-en-v1.5

vectorstore:
  database: qdrant

qdrant:
  path: local_data/private_gpt/qdrant

非私有 OpenAI-powered 部署

poetry install --extras "ui llms-openai embeddings-openai vector-stores-qdrant"
PGPT_PROFILES=openai poetry run python -m private_gpt

setting-openai.yaml

server:
  env_name: ${
   
   APP_ENV:openai}

llm:
  mode: openai

embedding:
  mode: openai

openai:
  api_key: ${
   
   OPENAI_API_KEY:}
  model: gpt-3.5-turbo

openai 风格的 API 调用

  • The API is built using FastAPI and follows OpenAI's API scheme.
  • The RAG pipeline is based on LlamaIndex.
curl -X POST http://localhost:8000/v1/completions \
     -H "Content-Type: application/json" \
     -d '{
  "prompt": "string",
  "stream": true

}'
相关文章
|
7月前
|
人工智能 安全 Serverless
让 AI Agent 安全“跑”在云端:基于函数计算打造 Agent 代码沙箱
Agent 代码沙箱是保障 AI 智能体安全执行的核心基础设施。依托函数计算构建强隔离、有状态、低成本的 AI 运行时。
|
缓存 人工智能 算法
不同业务怎么选服务器?CPU / 内存 / 带宽配置表
本文详解了服务器三大核心配置——CPU、内存、带宽,帮助读者快速理解服务器性能原理。结合不同业务场景,如个人博客、电商、数据库、直播等,提供配置选择建议,并强调合理搭配的重要性,避免资源浪费或瓶颈限制。内容实用,适合初学者和业务选型参考。
1671 0
|
10月前
|
人工智能 自然语言处理 监控
云呼叫中心升级智能语音导航:传统IVR流程平滑迁移方案
在客户体验至上的时代,传统IVR已成服务短板。本文提出基于AI语义理解的智能语音导航平滑迁移方案,涵盖评估、设计、测试到上线四步法,助力企业实现从菜单式按键到自然对话的升级,确保业务零中断,提升服务效率与客户满意度。
|
人工智能 并行计算 数据可视化
ms-swift 微调 internlm3-8b-instruct(论文分类任务)
本文介绍了使用InternLM系列模型进行论文分类任务的微调全过程,包括环境配置、数据准备、预训练与SFT(监督微调)、权重合并、模型评测及上传至魔搭社区等步骤。使用ms-swift框架和Lora训练方法,在具备40GB显存的A100 GPU环境下完成训练,并通过Swift工具进行效果评估。
1372 5
ms-swift 微调 internlm3-8b-instruct(论文分类任务)
|
安全 容器
win10删除文件时权限不够(你需要来自Administrators 的权限才能对此文件进行更改,无法枚举容器的对象,访问被拒绝)
win10删除文件时权限不够(你需要来自Administrators 的权限才能对此文件进行更改,无法枚举容器的对象,访问被拒绝)
9648 0
win10删除文件时权限不够(你需要来自Administrators 的权限才能对此文件进行更改,无法枚举容器的对象,访问被拒绝)
|
Java API 微服务
Java 21 与 Spring Boot 3.2 微服务开发从入门到精通实操指南
《Java 21与Spring Boot 3.2微服务开发实践》摘要: 本文基于Java 21和Spring Boot 3.2最新特性,通过完整代码示例展示了微服务开发全流程。主要内容包括:1) 使用Spring Initializr初始化项目,集成Web、JPA、H2等组件;2) 配置虚拟线程支持高并发;3) 采用记录类优化DTO设计;4) 实现JPA Repository与Stream API数据访问;5) 服务层整合虚拟线程异步处理和结构化并发;6) 构建RESTful API并使用Springdoc生成文档。文中特别演示了虚拟线程配置(@Async)和StructuredTaskSco
1367 0
|
小程序 JavaScript 数据挖掘
ClkLog常见问题-指标定义与统计逻辑Sec.1
用户行为分析指标项是衡量产品和运营管理的关键因素,它们可以帮助企业深入了解用户需求、行为模式、产品表现等多个方面。 比如页面停留时间、平均停留时长可以分析用户的需求和兴趣;跳出率、留存率可以查询用户的体验情况;事件触发次数、转化率等可以评估业务流程是否顺畅或者营销策略是否成功。 这篇我们将完整介绍ClkLog的中使用到的指标项定义以及一些重点指标的统计逻辑,便于运营人员理解后做数据分析,同时如果大家在使用过程中发现了指标项为空或异常的情况,可以对照说明排查问题。
ClkLog常见问题-指标定义与统计逻辑Sec.1
|
人工智能 自然语言处理 运维
干货|AI赋能教学开发-利用AI生成教案、课件和讲义
本文分享了高校教师利用AI工具设计课程方案和课件的经验,分为两部分。第一部分详细介绍使用GPT4o生成高质量课程大纲的过程,包括客户需求分析、提示词设计及优化调整。第二部分展示如何借助AIPPT快速制作精美课件,并介绍AIPPT的长文档解读和链接生成PPT等功能。此外,文章还分享了多个实用的AI工具、智能体和提示词技巧,助力提升教学效率与质量。
4071 3
|
IDE 开发工具 Windows
AHCI模式安装XP以及驱动下载
<h2 style="word-wrap: break-word; margin: 0px; padding: 0px; color: rgb(102, 102, 102); font-family: 宋体, Arial; line-height: 26px;">一、准备AHCI驱动</h2> <p style="word-wrap: break-word; margin-top: 5px;
3409 0