极简LLM入门指南1

LLM全景图:理解大模型技术栈

要开始使用大语言模型,首先需要理解几个基本概念。

LLM (大语言模型)是基于Transformer架构的模型,它处理文本的基本单位叫Token (中文通常是1-2个字符)。模型在一次处理中能接收的文本长度称为Context长度 。另一个重要参数是Temperature,它控制输出的随机性------0表示确定性输出,更高的值会增加创意但降低可控性。

技术栈架构

以下是大模型应用的典型技术栈:
调用 使用 使用 依赖 依赖 依赖 依赖 应用层
ChatGPT
Claude
文心一言 编程框架
LangChain
LlamaIndex
vLLM
Ollama 闭源模型
GPT-4
Claude-3 开源模型
Llama-3
Qwen-7B 计算框架
PyTorch
TensorFlow 加速库
CUDA
TensorRT

主流模型对比

选择模型时,需要考虑成本、性能和你的具体需求。下面是目前常用的模型对比。

闭源模型

模型 价格($/M tokens) 优势 劣势 选择场景
GPT-4 30 最强能力 贵、慢 复杂推理
GPT-3.5 0.5 性价比高 能力一般 日常对话
Claude-3 15 长文本(200K) 中文一般 文档处理

开源模型

模型 参数 显存需求 特点 部署难度
Llama-3-8B 8B 16GB 综合最强 简单
Qwen2.5-7B 7B 14GB 中文最佳 简单
DeepSeek-Coder 7B 14GB 代码专精 简单
Mixtral-8x7B 46B 96GB MoE架构 困难

选型决策树

python 复制代码
def select_model(budget, use_case, privacy):
    if privacy == "high":
        return "Llama-3-8B" if budget < 3000 else "Llama-3-70B"

    if use_case == "code":
        return "GPT-4" if budget > 1000/月 else "DeepSeek-Coder"
    elif use_case == "chinese":
        return "Qwen2.5" if privacy else "GPT-3.5"
    else:
        return "GPT-3.5"  # 默认选择

基本使用方法

调用API

python 复制代码
# 方式1:OpenAI
from openai import OpenAI

client = OpenAI(api_key="sk-...")
response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "Hello"}]
)
print(response.choices[0].message.content)

# 方式2:统一接口(支持多家API)
import litellm

response = litellm.completion(
    model="claude-3-sonnet",  # 或 gpt-4, gemini-pro 等
    messages=[{"role": "user", "content": "Hello"}]
)

本地模型部署

如果你对数据隐私有顾虑,可以在本地部署开源模型:

python 复制代码
# 方式1:使用Ollama(推荐新手)
import requests

response = requests.post('http://localhost:11434/api/generate',
    json={"model": "llama3", "prompt": "Hello"})
print(response.json()['response'])

# 方式2:使用Transformers
from transformers import AutoTokenizer, AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-7B-Instruct")
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-7B-Instruct")

inputs = tokenizer("Hello", return_tensors="pt")
outputs = model.generate(**inputs, max_length=100)
print(tokenizer.decode(outputs[0]))

流式输出

为了提高用户体验,你可以让模型逐字符输出结果,而不是一次性等待完整回复:

python 复制代码
import sys

for chunk in client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "写一首诗"}],
    stream=True
):
    if chunk.choices[0].delta.content:
        sys.stdout.write(chunk.choices[0].delta.content)
        sys.stdout.flush()

成本计算与选择

大模型的成本取决于你选择使用API还是本地部署。下面的工具可以帮你估算月度成本:

python 复制代码
class LLMCostCalculator:
    """成本计算工具"""

    # 价格表(美元/百万token)
    PRICES = {
        "gpt-4": {"input": 30, "output": 60},
        "gpt-3.5": {"input": 0.5, "output": 1.5},
        "claude-3": {"input": 15, "output": 75},
        "本地7B": {"input": 0, "output": 0, "gpu_hour": 0.5}
    }

    def calculate_monthly_cost(self, model, daily_requests, avg_tokens=500):
        """计算月度成本"""
        if model.startswith("本地"):
            # 本地部署成本 = 电费 + 硬件折旧
            gpu_hours = daily_requests * 0.01  # 假设每请求0.01小时
            return gpu_hours * 30 * self.PRICES[model]["gpu_hour"]
        else:
            # API成本
            total_tokens = daily_requests * avg_tokens * 30
            cost = total_tokens * self.PRICES[model]["output"] / 1_000_000
            return cost

    def recommend_solution(self, daily_requests, budget):
        """推荐方案"""
        if daily_requests < 100:
            return "使用GPT-3.5 API"
        elif daily_requests < 1000:
            return "混合方案:本地7B + GPT-3.5备用"
        else:
            return "本地部署Llama-3或Qwen"

# 使用示例
calc = LLMCostCalculator()
print(f"GPT-4月成本: ${calc.calculate_monthly_cost('gpt-4', 100):.2f}")
print(f"推荐方案: {calc.recommend_solution(500, 100)}")

实际应用案例

不同的应用场景对模型和成本的需求不同。以下是几个常见案例:

应用 推荐模型 关键技术 预算/月
智能客服 GPT-3.5/Qwen-7B RAG+缓存 $50-500
代码助手 DeepSeek-Coder 微调+IDE集成 $0-100
文档问答 Claude/Llama+RAG 向量库+检索 $100-1000
内容创作 GPT-4/Claude Prompt优化 $500-5000

知识库问答是常见的应用场景。这里展示一个基本实现:

python 复制代码
# 知识库问答最小实现
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.chains import RetrievalQA

# 1. 构建知识库
texts = ["文档1内容", "文档2内容"]
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_texts(texts, embeddings)

# 2. 问答
qa = RetrievalQA.from_llm(
    llm=ChatOpenAI(),
    retriever=vectorstore.as_retriever()
)
answer = qa.run("问题")

优化与问题排解

使用LLM应用时,你可能会遇到一些常见的问题。以下是解决方案:

Token超限:如果上下文超过模型限制,使用滑动窗口截断早期的对话历史。

响应慢:启用流式输出可以让用户更快看到结果,同时缓存重复的请求也能显著加快速度。

成本高:可以采用混合部署策略,简单请求用本地小模型,复杂请求用API调用。

幻觉问题:大模型有时会生成虚假信息。使用RAG系统并降低temperature参数可以缓解这个问题。

性能优化示例

python 复制代码
# 1. 缓存重复请求
from functools import lru_cache

@lru_cache(maxsize=1000)
def cached_llm_call(prompt):
    return llm.generate(prompt)

# 2. 批处理
responses = await asyncio.gather(*[
    llm.agenerate(prompt) for prompt in prompts
])

# 3. 模型量化(减少75%显存)
model = AutoModelForCausalLM.from_pretrained(
    "model_name",
    load_in_4bit=True
)

学习路线

如果你是初学者,可以按以下步骤学习:

  • 第1周:调通API,实现一个基础对话应用
  • 第2周:加入RAG知识库功能,部署到Web界面

有用的资源包括Ollama(本地模型部署)、LangChain(应用框架)和Hugging Face(模型仓库)。

实践建议

  • 从API开始。大多数初学者应该先用现成的API服务测试想法,而不是立即部署本地模型。
  • 测试不同的模型。每个模型的成本和性能不同,找到适合你用例的组合需要实验。
  • 关注成本。如果你的应用会频繁调用模型,选择正确的模型和优化方案可以显著降低成本。
相关推荐
大模型教程7 小时前
这份中国人写的大模型书,在外网竟然被刷爆了!
程序员·llm·agent
大模型教程7 小时前
大模型入门指南 - Training:小白也能看懂的“模型训练”全解析
程序员·llm·agent
AI大模型8 小时前
一文读懂大模型智能体(Agent):从理论到实践
程序员·llm·agent
AndrewHZ8 小时前
【大模型技术学习】大模型压力测试全攻略:以Qwen3-32B为例
人工智能·大模型·llm·压力测试·模型部署·通义千问·qwen3-32b
暴风鱼划水9 小时前
大型语言模型(入门篇)A
人工智能·语言模型·自然语言处理·大模型·llm
Robot侠9 小时前
Jetson Orin NX 上部署 Ollama + Llama 3.2
llama
坐吃山猪1 天前
BrowserUse12-源码-MCP模块
python·llm·playwright·browser-use
智泊AI1 天前
AI大模型优化了谁?程序员还是产品经理?
llm
快撑死的鱼1 天前
Llama-factory 详细学习笔记:第六章:DPO (直接偏好优化) 实战 (难点)
笔记·学习·llama