← 返回学习课程列表

Efficient Inference with SGLang: Text and Image Generation

课程来源:DeepLearning.AI | 讲师:Richard Chen(RadixArk技术成员) | 总时长:1小时19分钟 | 难度:中级

课程包含7个课时 + 3个代码示例,由DeepLearning.AI与LMSys、RadixArk联合出品

课程中文总结

第1课:介绍

核心内容:课程整体介绍,讲解了LLM推理的成本问题和SGLang的核心定位,课程由DeepLearning.AI与LMSys、RadixArk联合出品,讲师为RadixArk的Richard Chen。

关键知识点:

第2课:推理概述

核心内容:建立推理的心智模型,讲解推理成本高的根本原因,课程整体学习路径规划,对比训练和推理的计算特性差异。

关键知识点:

第3课:LLM推理基础

核心内容:从零实现注意力机制和KV缓存,理解缓存如何消除单请求内的冗余计算,这是所有LLM推理优化的基础。

关键知识点:

代码示例:

# KV缓存核心实现逻辑
def generate_with_kv_cache(model, prompt, max_tokens=100):
    # 首次处理prompt,生成初始KV缓存
    tokens = tokenizer.encode(prompt)
    past_key_values = None
    
    for _ in range(max_tokens):
        if past_key_values is None:
            # 首次计算:处理全部token
            outputs = model(tokens, past_key_values=None)
            past_key_values = outputs.past_key_values
        else:
            # 后续计算:只处理最新的1个token,复用历史KV缓存
            outputs = model(tokens[-1:], past_key_values=past_key_values)
            past_key_values = outputs.past_key_values
        
        # 选择下一个token
        next_token = outputs.logits[-1].argmax().item()
        tokens.append(next_token)
        
        if next_token == tokenizer.eos_token_id:
            break
    
    return tokenizer.decode(tokens)

第4课:高级LLM推理优化

核心内容:讲解SGLang的RadixAttention机制,如何通过基数树实现跨请求的前缀缓存,大幅提升多用户场景下的推理吞吐量。

关键知识点:

代码示例:

# 使用SGLang实现前缀缓存的推理
import sglang as sgl

@sgl.function
def rag_qa(s, document, question):
    s += f"请基于以下文档回答问题:\n{document}\n\n问题:{question}\n回答:"
    s += sgl.gen("answer", max_tokens=200)

# 启动SGLang服务,自动启用RadixAttention缓存
runtime = sgl.Runtime(model_path="meta-llama/Llama-2-7b-chat-hf")
sgl.set_default_backend(runtime)

# 多个不同问题共享相同文档上下文,自动复用缓存
doc = "..." # 长文档内容
questions = ["文档的主题是什么?", "提到了哪些关键技术?", "作者是谁?"]

for q in questions:
    result = rag_qa(document=doc, question=q)
    print(f"问题:{q}\n回答:{result['answer']}\n")

第5课:SGLang Diffusion

核心内容:将缓存优化思路扩展到图像生成场景,实现扩散模型的推理加速,同样的优化原则适用于不同模态的生成任务。

关键知识点:

代码示例:

# 使用SGLang加速Stable Diffusion图像生成
import sglang as sgl
from PIL import Image

# 加载扩散模型,自动启用缓存优化
sgl.set_default_backend(sgl.Runtime(model_path="runwayml/stable-diffusion-v1-5"))

@sgl.function
def generate_image(s, prompt):
    s += sgl.gen_image("image", prompt=prompt, num_steps=50)

# 生成多张相似主题的图像,自动复用公共计算
prompts = [
    "一只可爱的柯基犬在草地上奔跑,阳光明媚",
    "一只可爱的柯基犬在雪地里玩耍,雪花纷飞",
    "一只可爱的柯基犬在海边散步,海浪拍岸"
]

for p in prompts:
    result = generate_image(prompt=p)
    img = Image.fromarray(result["image"])
    img.save(f"corgi_{p[:10]}.png")

第6课:推理的未来方向

核心内容:讲解推理优化领域的前沿方向和开放问题,统一多模态推理引擎是未来的发展趋势。

关键知识点:

课程总结

SGLang通过KV缓存和RadixAttention技术,从单请求和跨请求两个层面消除了推理过程中的冗余计算,大幅提升了LLM和扩散模型的推理效率。课程的核心思路可以总结为:识别重复计算 → 通过缓存复用 → 规模化应用到多模态场景

这些优化技术已经在生产环境得到广泛验证,可以帮助企业降低70%以上的推理成本,同时提升用户体验,是当前大规模部署AI应用的必备技术。