
大模型部署全攻略!手把手教你部署开源 DeepSeek,告别访问受限困扰!
大模型正在重塑我们的学习和工作方式,不管你是选择使用 DeepSeek 还是自己部署大模型,最重要的是。
近年来,大模型技术突飞猛进,全球各大科技公司纷纷投入研发,形成了一系列成熟的主流大模型。以下是目前国内外最具代表性的大模型:
从上表可以看出,国内大模型在中文理解方面更具优势,同时涌现出大量开源方案,为用户提供了更灵活的部署选择。
此外,根据SuperCLUE最新发布的大语言模型排行榜,国内大模型主要供应商如下:
下面回答一个最近用户提问比较多的问题,为什么国内外有这么多大模型了,DeepSeek还能这么火爆呢?
DeepSeek 之所以能在短时间内火爆出圈,主要得益于以下几点优势:
-
硬件优化创新:DeepSeek 针对国产 GPU 进行了优化,使得推理速度更快,成本更低。
-
高效的训练架构:采用创新的 MoE(Mixture of Experts)架构,在保证计算效率的同时,提高了模型的智能化水平。
-
针对中文的优化:相较于 GPT-4、Claude,DeepSeek 在中文 NLP 任务(如阅读理解、代码生成)上表现更优。
-
开放性与易部署:DeepSeek 提供了 Hugging Face 权重支持,并优化了量化技术,使得普通用户也能尝试本地部署。
AI 时代,我们的思维方式也需要改变。很多人还习惯于传统搜索,但真正的智能时代,应该是与AI 交谈,不断优化问题,直到得到最佳答案。
正如爱因斯坦所说:“我们不能用制造问题时的思维方式来解决问题。”
比如,很多人直接问 AI:❌ “帮我写个市场分析报告。”
但如果优化成:✅ “作为市场经理,我需要对 2024 年 Q4 中国新能源汽车市场做一个简要分析。请结合销量数据、用户评价趋势和政策影响,输出一篇 800 字报告。”
这样,AI 生成的内容不仅更精准,还能真正解决你的需求。
但是,当下很多用户在尝试使用DeepSeek的时候面临一个问题,许多用户反馈,在某些场景下,DeepSeek 访问不稳定,DeepSeek依然未能从服务崩溃中彻底走出来。
这也引出了一个关键问题:当 DeepSeek 不可用时,如何保证你的 AI 工作流不受影响?
解决方案 1:使用其他大模型
如果 DeepSeek 无法访问,可以切换到其他国内外大模型:
-
国内替代:Qwen、Baichuan、Yi-34B 等。
-
国外替代:GPT-4、Claude 2、Gemini 1.5(需要科学上网)。
解决方案 2:自己部署大模型
如果你想长期稳定地使用大模型,并希望掌握更大的自由度,可以考虑自部署。
自己部署大模型需要什么资源?
部署大模型的核心资源是 GPU,不同规模的模型对算力的需求不同,以下是大致的硬件和成本估算:
几种大模型部署方案
1. 本地部署(学习/实验)
如果你只是想体验大模型,学习 RAG(检索增强生成),可以尝试在 笔记本/台式机 上运行小型模型。
示例:
-
下载 Qwen 1.5B(Hugging Face)
-
使用
transformers
加载模型 -
运行本地推理
2. 单机 3080/3090 运行 7B 级别模型
如果你有一块 24GB 显存的 3080/3090,可以运行 DeepSeek 7B、Llama 3-7B 级别的模型。
工具推荐:
-
llama.cpp
(高效量化推理) -
AutoGPTQ
(低显存推理优化)
3. 服务器部署 30B-70B 级别大模型(企业级方案)
如果需要更强的计算能力,建议使用 A100 / H100 服务器 进行部署。
应用场景:
-
自建 AI 助理
-
企业级 RAG(检索增强生成)
-
批量数据处理
接下来,我提供一个示例,利用DeepSeek 和 Qdrant 构建一个中文新闻 AI!
尤其是因为,尽管LLMs其规模和复杂性越来越大,但在构建英语之外的准确有效的语言 AI 仍然存在一系列挑战。在这种情况下,DeepSeek LLM 开始了一个长期的项目,以克服语言应用程序中的不准确之处。DeepSeek LLM 在中文方面表现出色,在这里,我们将了解它在从中文新闻数据集中获取新闻时的表现。
我们将利用 LlamaIndex、Qdrant 的 FastEmbed 和 Qdrant Vector Store 来开发一个应用程序,让我们可以通过强大的 RAG 来理解中文新闻。
DeepSeek LLM 是一种高级语言模型,它开发了不同的模型,包括 Base 和 Chat。它是在包含 2 万亿个英文和中文令牌的数据集上从头开始训练的。就大小而言,DeepSeek LLM 模型有两种:一种包含 70 亿个参数,另一种包含 670 亿个参数。
7B 模型使用多头注意力,而 67B 模型使用分组查询注意力。这些变体在与 Llama 2 模型相同的架构上运行,后者是一个自回归 transformer 解码器模型。
DeepSeek LLM 是一个致力于从长远角度推进开源大型语言模型的项目。然而,DeepSeek LLM 67B 在推理、数学、编码和理解等各个领域都优于 Llama 2 70B。与包括 GPT 3.5 在内的其他模型相比,DeepSeek LLM 在中文熟练度方面表现出色。
Qdrant 是一个用 Rust 编写的开源向量数据库和向量相似性搜索引擎,旨在通过先进和高性能的向量相似性搜索技术为下一代 AI 应用程序提供支持。其主要功能包括多语言支持,可实现各种数据类型的多功能性,以及适用于各种应用程序的过滤器。
FastEmbed 是一个轻量级、快速且准确的 Python 库,专为嵌入生成而构建,由 Qdrant 监督维护。它通过利用量化模型权重和 ONNX 运行时来实现效率和速度,从而避免了 PyTorch 依赖项的必要性。
LlamaIndex 是一个强大的框架,非常适合构建检索增强生成 (RAG) 应用程序。它有助于用于检索和合成的块的解耦,这是一个关键特征,因为检索的最佳表示可能与合成的不同。随着文档量的增加,LlamaIndex 通过确保更精确的结果来支持结构化检索,尤其是当查询仅与文档子集相关时。
由于 DeepSeek LLM 在中文语言熟练度方面表现出色,让我们使用 Retrieval Augmented Generation 构建一个中文新闻 AI。
首先,让我们安装所有依赖项。
pip install -q llama-index transformers datasets``pip install -q llama-cpp-python``pip install -q qdrant-client``pip install -q llama_hub``pip install -q fastembed
在这里,我使用了这个数据集;它是一个多语言的新闻数据集。我选择了中文。加载数据集并将其保存到您的目录中。我们将使用 LlamaIndex 通过 SimpleDirectoryReader 读取数据。
from datasets import load_dataset``dataset = load_dataset("intfloat/multilingual_cc_news", languages=["zh"], split="train")``dataset.save_to_disk("Notebooks/dataset")
使用 LlamaIndex,从保存数据集的目录中加载数据。
from llama_index import SimpleDirectoryReader``documents = SimpleDirectoryReader("Notebooks/dataset").load_data()
使用 SentenceSplitter 将文档拆分为小块。在这里,我们需要维护文档和源文档索引之间的关系,以便它有助于注入文档元数据。
from llama_index.node_parser.text import SentenceSplitter``text_parser = SentenceSplitter(chunk_size=1024,)``text_chunks = []``doc_idxs = []``for doc_idx, doc in enumerate(documents):` `cur_text_chunks = text_parser.split_text(doc.text)` `text_chunks.extend(cur_text_chunks)` `doc_idxs.extend([doc_idx] * len(cur_text_chunks))
然后,我们将手动从文本块构建节点。
from llama_index.schema import TextNode``nodes = []``for idx, text_chunk in enumerate(text_chunks):` `node = TextNode(text=text_chunk,)` `src_doc = documents[doc_idxs[idx]]` `node.metadata = src_doc.metadata` `nodes.append(node)
对于每个节点,我们将使用 FastEmbed Embedding 模型生成嵌入。
from llama_index.embeddings import FastEmbedEmbedding``embed_model = FastEmbedEmbedding(model_name="BAAI/bge-small-en-v1.5")``for node in nodes:` `node_embedding = embed_model.get_text_embedding(node.get_content(metadata_mode="all"))` `node.embedding = node_embedding
现在,是时候使用 LlamaIndex 中的 HuggingFaceLLM 加载 DeepSeekLLM。在这里,我使用了聊天模型。
from llama_index.llms import HuggingFaceLLM``llm = HuggingFaceLLM(` `context_window=4096,` `max_new_tokens=256,` `generate_kwargs={"temperature": 0.7, "do_sample": False},` `tokenizer_name="deepseek-ai/deepseek-llm-7b-chat",` `model_name="deepseek-ai/deepseek-llm-7b-chat",` `device_map="auto",` `stopping_ids=[50278, 50279, 50277, 1, 0],` `tokenizer_kwargs={"max_length": 4096},` `model_kwargs={"torch_dtype": torch.float16}``)
然后,我们将定义 ServiceContext,它由嵌入模型和大型语言模型组成。
from llama_index import ServiceContext``service_context = ServiceContext.from_defaults(llm=llm, embed_model=embed_model)
之后,我们将使用 Qdrant 向量数据库创建一个向量存储集合,并使用向量存储集合创建一个存储上下文。
import qdrant_client``from llama_index.vector_stores.qdrant import QdrantVectorStore``client = qdrant_client.QdrantClient(location=":memory:")``from llama_index.storage.storage_context import StorageContext``from llama_index import (VectorStoreIndex,` `ServiceContext,` `SimpleDirectoryReader,)``vector_store = QdrantVectorStore(client=client, collection_name="my_collection")``vector_store.add(nodes)``storage_context = StorageContext.from_defaults(vector_store=vector_store)
我们将文档、存储上下文和服务上下文传递到 VectorStoreIndex 中。
index = VectorStoreIndex.from_documents(documents, storage_context=storage_context, service_context=service_context)
我们将使用查询字符串生成查询嵌入,以构建检索管道。
query_str = "Can you give me news around IPhone?"``query_embedding = embed_model.get_query_embedding(query_str)
然后,我们将构造一个 Vector Store 查询并查询 vector 数据库。
from llama_index.vector_stores import VectorStoreQuery``query_mode = "default"``vector_store_query = VectorStoreQuery(query_embedding=query_embedding, similarity_top_k=2, mode=query_mode)``query_result = vector_store.query(vector_store_query)``print(query_result.nodes[0].get_content())
然后,我们将结果解析为一组节点。
from llama_index.schema import NodeWithScore``from typing import Optional``nodes_with_scores = []``for index, node in enumerate(query_result.nodes):` `score: Optional[float] = None` `if query_result.similarities is not None:` `score = query_result.similarities[index]` `nodes_with_scores.append(NodeWithScore(node=node, score=score))
现在,使用上述内容,我们将创建一个 retriever 类。
from llama_index import QueryBundle``from llama_index.retrievers import BaseRetriever``from typing import Any, List``class VectorDBRetriever(BaseRetriever):` `"""Retriever over a qdrant vector store."""` `def __init__(self,` `vector_store: QdrantVectorStore,` `embed_model: Any,` `query_mode: str = "default",` `similarity_top_k: int = 2) -> None:` `"""Init params."""` `self._vector_store = vector_store` `self._embed_model = embed_model` `self._query_mode = query_mode` `self._similarity_top_k = similarity_top_k` `super().__init__()` `def _retrieve(self, query_bundle: QueryBundle) -> List[NodeWithScore]:` `"""Retrieve."""` `query_embedding = embed_model.get_query_embedding(` `query_bundle.query_str` `)` `vector_store_query = VectorStoreQuery(` `query_embedding=query_embedding,` `similarity_top_k=self._similarity_top_k,` `mode=self._query_mode,` `)` `query_result = vector_store.query(vector_store_query)` `nodes_with_scores = []` `for index, node in enumerate(query_result.nodes):` `score: Optional[float] = None` `if query_result.similarities is not None:` `score = query_result.similarities[index]` `nodes_with_scores.append(NodeWithScore(node=node, score=score))` `return nodes_with_scores``retriever = VectorDBRetriever(` `vector_store, embed_model, query_mode="default", similarity_top_k=2``)
然后,创建一个检索器查询引擎。
from llama_index.query_engine import RetrieverQueryEngine``query_engine = RetrieverQueryEngine.from_args(` `retriever, service_context=service_context``)
最后,我们的检索器已准备好查询和聊天。让我们传递一个查询。
query_str = "世界有几大洲?"``response = query_engine.query(query_str)``print(str(response))
DeepSeek LLM 在回答问题方面表现得非常好,没有面临挑战。它的架构使其有别于其他模型,最令人印象深刻的方面是它利用直接偏好优化来增强模型的功能。它是一个中英文的微调和优化模型,我们从结果中观察到这种微调和优化的模型的性能如何。
结语:AI 时代,提问即生产力!
大模型正在重塑我们的学习和工作方式,不管你是选择使用 DeepSeek 还是自己部署大模型,最重要的是 学会与 AI 对话。
你的每一个问题,决定了 AI 给予你的答案。
那么,你是否尝试过自己部署大模型?你最想解决的 AI 应用场景是什么?欢迎在评论区交流你的想法!
如何学习AI大模型 ?
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓
CSDN粉丝独家福利
这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】
读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
👉1.大模型入门学习思维导图👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过AI大模型的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。(全套教程文末领取哈)
👉2.AGI大模型配套视频👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。
👉3.大模型实际应用报告合集👈
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(全套教程文末领取哈)
👉4.大模型落地应用案例PPT👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(全套教程文末领取哈)
👉5.大模型经典学习电子书👈
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(全套教程文末领取哈)
👉6.大模型面试题&答案👈
截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(全套教程文末领取哈)
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习
CSDN粉丝独家福利
这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】
读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈
更多推荐
所有评论(0)