大模型工程化vs传统AI工程:核心差异解析

大模型工程化vs传统AI工程:核心差异解析

大模型工程化vs传统AI工程:核心差异解析

在这里插入图片描述
📝 本章学习目标:本章是基础入门部分,帮助读者建立大模型工程化的初步认知。通过本章学习,你将全面掌握"大模型工程化vs传统AI工程:核心差异解析"这一核心主题。

一、引言:为什么这个话题如此重要

在大模型技术快速发展的今天,大模型工程化vs传统AI工程:核心差异解析已经成为每个AI工程师必须掌握的核心技能。大模型的工程化落地不仅需要理解模型原理,更需要掌握系统化的部署、优化和运维能力。

1.1 背景与意义

💡 核心认知:大模型工程化是将研究模型转化为生产级服务的关键环节。一个优秀的模型如果缺乏良好的工程化支持,将难以在实际场景中发挥价值。

从GPT-3到GPT-4,从LLaMA到Qwen,大模型参数量从数十亿增长到数千亿。这种规模的增长带来了巨大的工程挑战:如何高效部署?如何优化推理速度?如何控制成本?这些问题都需要系统化的工程化能力来解决。

1.2 本章结构概览

为了帮助读者系统性地掌握本章内容,我将从以下几个维度展开:

📊 概念解析 → 技术原理 → 实现方法 → 实践案例 → 最佳实践 → 总结展望 

二、核心概念解析

2.1 基本定义

让我们首先明确几个核心概念:

概念一:基础定义

大模型工程化vs传统AI工程:核心差异解析是大模型工程化领域的核心主题,涉及模型部署、性能优化、系统架构等关键环节。

概念二:技术内涵

从技术角度看,这一概念包含以下几个层面:

维度说明重要程度
理论基础算法原理与系统设计⭐⭐⭐⭐⭐
工程实现代码开发与系统集成⭐⭐⭐⭐⭐
性能优化效率提升与资源管理⭐⭐⭐⭐⭐
运维保障监控告警与故障处理⭐⭐⭐⭐

2.2 关键术语解释

⚠️ 注意:以下术语是理解本章内容的基础,请务必掌握。

术语1:核心概念

这是理解大模型工程化vs传统AI工程:核心差异解析的关键。在大模型工程化中,我们需要深入理解其背后的技术原理和实现细节。

术语2:性能指标

在评估相关技术时,我们通常关注以下指标:

  • 推理延迟:单次请求的响应时间
  • 吞吐量:单位时间内处理的请求数
  • 显存占用:模型运行所需的GPU显存
  • 资源利用率:计算资源的有效使用程度

2.3 技术架构概览

💡 架构理解

┌─────────────────────────────────────────┐ │ 应用层 (Application) │ │ API网关 / 负载均衡 / 限流熔断 │ ├─────────────────────────────────────────┤ │ 服务层 (Service) │ │ 模型服务 / 推理引擎 / 批处理调度 │ ├─────────────────────────────────────────┤ │ 引擎层 (Engine) │ │ TensorRT / ONNX Runtime / vLLM / DeepSpeed │ ├─────────────────────────────────────────┤ │ 模型层 (Model) │ │ 量化模型 / 优化模型 / 原始模型 │ ├─────────────────────────────────────────┤ │ 基础设施层 (Infrastructure) │ │ GPU集群 / 容器编排 / 监控告警 │ └─────────────────────────────────────────┘ 

三、技术原理深入

3.1 核心技术原理

🔧 技术深度:本节将深入探讨技术实现细节。

大模型工程化vs传统AI工程:核心差异解析的核心实现涉及以下关键技术:

技术一:基础实现

""" 大模型工程化vs传统AI工程:核心差异解析 - 基础实现示例 大模型工程化核心代码 """import torch import torch.nn as nn from transformers import AutoModelForCausalLM, AutoTokenizer from typing import Optional, List, Dict, Any import time import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__)classLLMEngine:""" 大模型推理引擎基础类 提供模型加载、推理、优化等核心功能 """def__init__(self, model_name:str, device:str="cuda", precision:str="fp16"):""" 初始化推理引擎 Args: model_name: 模型名称或路径 device: 运行设备 precision: 精度类型 (fp32/fp16/bf16) """ self.model_name = model_name self.device = device self.precision = precision self.model =None self.tokenizer =None self._load_model()def_load_model(self):"""加载模型和分词器""" logger.info(f"正在加载模型: {self.model_name}")# 加载分词器 self.tokenizer = AutoTokenizer.from_pretrained( self.model_name, trust_remote_code=True)# 设置精度 torch_dtype ={"fp32": torch.float32,"fp16": torch.float16,"bf16": torch.bfloat16 }.get(self.precision, torch.float16)# 加载模型 self.model = AutoModelForCausalLM.from_pretrained( self.model_name, torch_dtype=torch_dtype, device_map="auto", trust_remote_code=True) self.model.eval() logger.info("模型加载完成")defgenerate(self, prompt:str, max_new_tokens:int=512, temperature:float=0.7, top_p:float=0.9,**kwargs)->str:""" 生成文本 Args: prompt: 输入提示词 max_new_tokens: 最大生成token数 temperature: 温度参数 top_p: nucleus采样参数 Returns: 生成的文本 """# 编码输入 inputs = self.tokenizer(prompt, return_tensors="pt") inputs ={k: v.to(self.device)for k, v in inputs.items()}# 生成with torch.no_grad(): outputs = self.model.generate(**inputs, max_new_tokens=max_new_tokens, temperature=temperature, top_p=top_p, do_sample=True, pad_token_id=self.tokenizer.eos_token_id,**kwargs )# 解码输出 generated_text = self.tokenizer.decode( outputs[0], skip_special_tokens=True)return generated_text defbenchmark(self, prompt:str="你好", num_runs:int=10)-> Dict[str,float]:""" 性能基准测试 Args: prompt: 测试提示词 num_runs: 运行次数 Returns: 性能指标字典 """ latencies =[]for i inrange(num_runs): start_time = time.time() _ = self.generate(prompt, max_new_tokens=50) end_time = time.time() latencies.append(end_time - start_time)return{"avg_latency":sum(latencies)/len(latencies),"min_latency":min(latencies),"max_latency":max(latencies),"p50":sorted(latencies)[len(latencies)//2],"p99":sorted(latencies)[int(len(latencies)*0.99)]}defget_memory_usage(self)-> Dict[str,float]:"""获取显存使用情况"""if torch.cuda.is_available(): allocated = torch.cuda.memory_allocated()/1024**3 reserved = torch.cuda.memory_reserved()/1024**3return{"allocated_gb":round(allocated,2),"reserved_gb":round(reserved,2)}return{}classOptimizedLLMEngine(LLMEngine):""" 优化后的大模型推理引擎 包含量化、缓存等优化技术 """def__init__(self, model_name:str, device:str="cuda", precision:str="fp16", enable_kv_cache:bool=True):""" 初始化优化引擎 Args: model_name: 模型名称 device: 运行设备 precision: 精度类型 enable_kv_cache: 是否启用KV缓存 """ self.enable_kv_cache = enable_kv_cache self.kv_cache ={}super().__init__(model_name, device, precision)defgenerate_with_cache(self, prompt:str, session_id: Optional[str]=None,**kwargs)->str:""" 带缓存的生成 Args: prompt: 输入提示词 session_id: 会话ID,用于缓存管理 Returns: 生成的文本 """# 检查缓存if session_id and session_id in self.kv_cache:# 使用缓存的KV past_key_values = self.kv_cache[session_id]else: past_key_values =None# 编码输入 inputs = self.tokenizer(prompt, return_tensors="pt") inputs ={k: v.to(self.device)for k, v in inputs.items()}# 生成with torch.no_grad(): outputs = self.model.generate(**inputs, past_key_values=past_key_values, use_cache=self.enable_kv_cache,**kwargs )# 更新缓存if session_id and self.enable_kv_cache: self.kv_cache[session_id]= outputs.past_key_values return self.tokenizer.decode(outputs[0], skip_special_tokens=True)defclear_cache(self, session_id: Optional[str]=None):"""清除缓存"""if session_id: self.kv_cache.pop(session_id,None)else: self.kv_cache.clear()# 使用示例if __name__ =="__main__":# 创建引擎 engine = LLMEngine( model_name="Qwen/Qwen2-1.5B", device="cuda", precision="fp16")# 生成文本 response = engine.generate("请介绍一下大模型工程化")print(f"生成结果: {response}")# 性能测试 metrics = engine.benchmark()print(f"性能指标: {metrics}")# 显存使用 memory = engine.get_memory_usage()print(f"显存使用: {memory}")

技术二:量化优化实现

""" 大模型量化优化实现 支持INT8/INT4量化 """import torch from transformers import AutoModelForCausalLM, AutoTokenizer from typing import Optional import bitsandbytes as bnb classQuantizedLLMEngine:""" 量化大模型引擎 支持INT8和INT4量化,大幅降低显存占用 """def__init__(self, model_name:str, quantization:str="int8", device_map:str="auto"):""" 初始化量化引擎 Args: model_name: 模型名称 quantization: 量化类型 (int8/int4/fp4/nf4) device_map: 设备映射策略 """ self.model_name = model_name self.quantization = quantization # 配置量化参数 quantization_config = self._get_quantization_config()# 加载模型 self.model = AutoModelForCausalLM.from_pretrained( model_name, quantization_config=quantization_config, device_map=device_map, trust_remote_code=True) self.tokenizer = AutoTokenizer.from_pretrained(model_name)def_get_quantization_config(self):"""获取量化配置"""from transformers import BitsAndBytesConfig if self.quantization =="int8":return BitsAndBytesConfig( load_in_8bit=True, llm_int8_threshold=6.0)elif self.quantization =="int4":return BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_compute_dtype=torch.float16, bnb_4bit_use_double_quant=True, bnb_4bit_quant_type="nf4")else:returnNonedefgenerate(self, prompt:str,**kwargs)->str:"""生成文本""" inputs = self.tokenizer(prompt, return_tensors="pt") inputs ={k: v.cuda()for k, v in inputs.items()}with torch.no_grad(): outputs = self.model.generate(**inputs,**kwargs)return self.tokenizer.decode(outputs[0], skip_special_tokens=True)defget_model_size(self)-> Dict[str,float]:"""获取模型大小信息""" param_count =sum(p.numel()for p in self.model.parameters())# 估算显存占用if self.quantization =="int4": size_gb = param_count *0.5/1024**3# INT4约0.5字节/参数elif self.quantization =="int8": size_gb = param_count *1.0/1024**3# INT8约1字节/参数else: size_gb = param_count *2.0/1024**3# FP16约2字节/参数return{"param_count_billion":round(param_count /1e9,2),"estimated_size_gb":round(size_gb,2)}# 使用示例if __name__ =="__main__":# INT8量化 engine_int8 = QuantizedLLMEngine( model_name="Qwen/Qwen2-7B", quantization="int8")print(f"INT8模型大小: {engine_int8.get_model_size()}")# INT4量化 engine_int4 = QuantizedLLMEngine( model_name="Qwen/Qwen2-7B", quantization="int4")print(f"INT4模型大小: {engine_int4.get_model_size()}")

3.2 推理优化技术

📊 优化方法

""" 大模型推理优化技术 包含批处理、并行等优化 """import torch from typing import List, Optional from dataclasses import dataclass from queue import Queue import threading import time @dataclassclassRequest:"""推理请求""" request_id:str prompt:str max_tokens:int=100 timestamp:float= time.time()classDynamicBatcher:""" 动态批处理器 自动将多个请求合并处理,提升吞吐量 """def__init__(self, model, tokenizer, max_batch_size:int=32, max_wait_time:float=0.1):""" 初始化批处理器 Args: model: 模型实例 tokenizer: 分词器 max_batch_size: 最大批量大小 max_wait_time: 最大等待时间 """ self.model = model self.tokenizer = tokenizer self.max_batch_size = max_batch_size self.max_wait_time = max_wait_time self.request_queue = Queue() self.results ={} self.running =True# 启动处理线程 self.process_thread = threading.Thread(target=self._process_loop) self.process_thread.start()def_process_loop(self):"""批处理循环"""while self.running: batch =[] start_time = time.time()# 收集请求whilelen(batch)< self.max_batch_size:if time.time()- start_time > self.max_wait_time:breaktry: request = self.request_queue.get(timeout=0.01) batch.append(request)except:continueifnot batch:continue# 批量推理 self._process_batch(batch)def_process_batch(self, batch: List[Request]):"""处理批量请求""" prompts =[r.prompt for r in batch]# 批量编码 inputs = self.tokenizer( prompts, padding=True, return_tensors="pt").to(self.model.device)# 批量生成with torch.no_grad(): outputs = self.model.generate(**inputs, max_new_tokens=max(r.max_tokens for r in batch))# 解码结果for i, request inenumerate(batch): result = self.tokenizer.decode( outputs[i], skip_special_tokens=True) self.results[request.request_id]= result defsubmit(self, request: Request):"""提交请求""" self.request_queue.put(request)defget_result(self, request_id:str, timeout:float=30)-> Optional[str]:"""获取结果""" start_time = time.time()while time.time()- start_time < timeout:if request_id in self.results:return self.results.pop(request_id) time.sleep(0.01)returnNoneclassModelParallel:""" 模型并行推理 将大模型分割到多个GPU上运行 """def__init__(self, model_name:str, num_gpus:int=2):""" 初始化模型并行 Args: model_name: 模型名称 num_gpus: GPU数量 """ self.num_gpus = num_gpus self.device_map = self._create_device_map()# 加载模型 self.model = AutoModelForCausalLM.from_pretrained( model_name, device_map=self.device_map, trust_remote_code=True)def_create_device_map(self)-> Dict:"""创建设备映射"""# 简单的层分配策略return"auto"# 使用自动分配defgenerate(self, prompt:str,**kwargs)->str:"""生成文本""" inputs = self.tokenizer(prompt, return_tensors="pt")# 自动路由到正确的设备 inputs ={k: v.to("cuda:0")for k, v in inputs.items()}with torch.no_grad(): outputs = self.model.generate(**inputs,**kwargs)return self.tokenizer.decode(outputs[0], skip_special_tokens=True)

3.3 性能监控实现

💡 监控方案

""" 大模型性能监控系统 """import time import psutil import torch from dataclasses import dataclass, field from typing import Dict, List import json from datetime import datetime @dataclassclassPerformanceMetrics:"""性能指标""" timestamp:str latency_ms:float throughput_qps:float gpu_memory_used_gb:float gpu_memory_total_gb:float gpu_utilization:float cpu_utilization:float request_count:intdefto_dict(self)-> Dict:return{"timestamp": self.timestamp,"latency_ms": self.latency_ms,"throughput_qps": self.throughput_qps,"gpu_memory_used_gb": self.gpu_memory_used_gb,"gpu_memory_total_gb": self.gpu_memory_total_gb,"gpu_utilization": self.gpu_utilization,"cpu_utilization": self.cpu_utilization,"request_count": self.request_count }classLLMPerformanceMonitor:""" 大模型性能监控器 实时监控推理性能和资源使用 """def__init__(self, collection_interval:float=1.0):""" 初始化监控器 Args: collection_interval: 采集间隔(秒) """ self.collection_interval = collection_interval self.metrics_history: List[PerformanceMetrics]=[] self.request_times: List[float]=[] self.request_count =0 self.running =Falsedefstart(self):"""启动监控""" self.running =Truedefstop(self):"""停止监控""" self.running =Falsedefrecord_request(self, latency:float):"""记录请求""" self.request_times.append(latency) self.request_count +=1defcollect_metrics(self)-> PerformanceMetrics:"""采集性能指标"""# GPU指标if torch.cuda.is_available(): gpu_memory_used = torch.cuda.memory_allocated()/1024**3 gpu_memory_total = torch.cuda.get_device_properties(0).total_memory /1024**3# GPU利用率需要nvidia-smi或其他工具 gpu_utilization =0.0# 简化处理else: gpu_memory_used =0 gpu_memory_total =0 gpu_utilization =0# CPU指标 cpu_utilization = psutil.cpu_percent()# 计算吞吐量iflen(self.request_times)>0: recent_requests =[t for t in self.request_times if time.time()- t <60] throughput =len(recent_requests)/60.0else: throughput =0# 计算延迟if self.request_times: avg_latency =sum(self.request_times[-100:])/len(self.request_times[-100:])*1000else: avg_latency =0 metrics = PerformanceMetrics( timestamp=datetime.now().isoformat(), latency_ms=avg_latency, throughput_qps=throughput, gpu_memory_used_gb=gpu_memory_used, gpu_memory_total_gb=gpu_memory_total, gpu_utilization=gpu_utilization, cpu_utilization=cpu_utilization, request_count=self.request_count ) self.metrics_history.append(metrics)return metrics defget_summary(self)-> Dict:"""获取性能摘要"""ifnot self.metrics_history:return{} recent = self.metrics_history[-100:]return{"avg_latency_ms":sum(m.latency_ms for m in recent)/len(recent),"max_latency_ms":max(m.latency_ms for m in recent),"min_latency_ms":min(m.latency_ms for m in recent),"avg_throughput_qps":sum(m.throughput_qps for m in recent)/len(recent),"avg_gpu_memory_gb":sum(m.gpu_memory_used_gb for m in recent)/len(recent),"total_requests": self.request_count }defexport_metrics(self, filepath:str):"""导出指标""" data =[m.to_dict()for m in self.metrics_history]withopen(filepath,'w')as f: json.dump(data, f, indent=2)# 使用示例if __name__ =="__main__": monitor = LLMPerformanceMonitor() monitor.start()# 模拟请求for i inrange(100): monitor.record_request(time.time()) metrics = monitor.collect_metrics()print(f"指标: {metrics.to_dict()}") time.sleep(0.1)print(f"性能摘要: {monitor.get_summary()}")

四、实践应用指南

4.1 应用场景分析

核心场景:以下是大模型工程化vs传统AI工程:核心差异解析的主要应用场景。

场景一:在线推理服务

""" 在线推理服务实现 FastAPI + 大模型 """from fastapi import FastAPI, HTTPException from pydantic import BaseModel from typing import Optional import uvicorn import asyncio from concurrent.futures import ThreadPoolExecutor app = FastAPI(title="LLM Inference API")# 请求模型classGenerateRequest(BaseModel): prompt:str max_tokens:int=512 temperature:float=0.7 top_p:float=0.9classGenerateResponse(BaseModel): text:str latency_ms:float tokens_generated:int# 全局引擎 engine =None executor = ThreadPoolExecutor(max_workers=4)@app.on_event("startup")asyncdefstartup():"""启动时加载模型"""global engine engine = LLMEngine( model_name="Qwen/Qwen2-1.5B", precision="fp16")@app.post("/generate", response_model=GenerateResponse)asyncdefgenerate(request: GenerateRequest):"""生成接口"""import time start = time.time()# 异步执行推理 loop = asyncio.get_event_loop() result =await loop.run_in_executor( executor, engine.generate, request.prompt, request.max_tokens, request.temperature, request.top_p ) latency =(time.time()- start)*1000return GenerateResponse( text=result, latency_ms=latency, tokens_generated=len(result.split()))@app.get("/health")asyncdefhealth():"""健康检查"""return{"status":"healthy"}@app.get("/metrics")asyncdefmetrics():"""性能指标"""return engine.get_memory_usage()if __name__ =="__main__": uvicorn.run(app, host="0.0.0.0", port=8000)

场景二:批量推理任务

应用领域具体用途优化重点
数据处理批量文本生成吞吐量优化
模型评估大规模测试并行处理
数据增强合成数据生成成本控制

4.2 实施步骤详解

🔧 操作指南:以下是完整的实施步骤。

步骤一:环境准备

# 安装依赖 pip install torch transformers accelerate pip install bitsandbytes # 量化支持 pip install tensorrt # TensorRT加速 pip install onnx onnxruntime # ONNX支持# 验证GPU python -c"import torch; print(torch.cuda.is_available())"

步骤二:模型部署

阶段任务输出
模型准备下载、转换、量化可部署模型
服务搭建API开发、负载均衡推理服务
监控配置日志、告警、仪表盘监控系统
性能测试压测、调优性能报告

4.3 最佳实践分享

💡 经验总结

最佳实践一:显存优化

① 使用混合精度训练
② 启用梯度检查点
③ 采用模型量化
④ 优化批处理策略

最佳实践二:推理加速

  • 使用TensorRT/ONNX Runtime
  • 实现动态批处理
  • 启用KV缓存
  • 模型并行部署

五、案例分析

5.1 成功案例

📊 案例一:某公司大模型服务优化

背景介绍

某公司的大模型推理服务响应慢、成本高,需要进行工程化优化。

解决方案

# 优化方案实施classOptimizedService:"""优化后的服务"""def__init__(self):# 1. 使用INT4量化 self.model = QuantizedLLMEngine( model_name="model", quantization="int4")# 2. 启用动态批处理 self.batcher = DynamicBatcher( self.model, max_batch_size=16)# 3. 配置监控 self.monitor = LLMPerformanceMonitor()defserve(self, request):"""服务请求""" self.monitor.record_request(time.time())return self.batcher.submit(request)

实施效果

指标优化前优化后提升幅度
推理延迟500ms150ms70%
显存占用28GB8GB71%
吞吐量10 QPS50 QPS400%
成本000/月00/月70%

5.2 失败教训

案例二:过度优化导致精度下降

问题分析

某项目过度追求性能优化,导致:

① INT4量化精度损失严重
② 模型剪枝过度
③ 输出质量下降

经验教训

⚠️ 警示

  • 优化前评估精度影响
  • 设置合理的精度阈值
  • 进行充分的测试验证

六、常见问题解答

6.1 技术问题

Q1:如何选择量化方案?

💡 建议

场景推荐方案精度损失
高精度要求FP16
平衡方案INT8<1%
显存受限INT41-3%

Q2:如何处理显存不足?

# 显存优化策略defoptimize_memory():# 1. 清理缓存 torch.cuda.empty_cache()# 2. 使用梯度检查点 model.gradient_checkpointing_enable()# 3. 降低精度 model = model.half()# 4. 模型分片 model = AutoModelForCausalLM.from_pretrained( model_name, device_map="auto")

6.2 应用问题

Q3:如何提升推理速度?

💡 优化策略

① 使用TensorRT加速
② 启用KV缓存
③ 实现批处理
④ 模型量化

Q4:如何保证服务稳定性?

⚠️ 稳定性要点

  • 实现健康检查
  • 配置自动扩缩容
  • 设置请求超时
  • 实现熔断降级

七、未来发展趋势

7.1 技术趋势

📈 发展方向

趋势描述预计时间
端侧部署手机运行大模型1-2年
推理加速专用AI芯片持续推进
自动优化AutoML for LLM快速发展
多模态统一推理引擎主流趋势

7.2 应用趋势

核心判断

未来3-5年,大模型工程化将在以下领域产生深远影响:

企业服务:智能客服、知识管理
内容创作:辅助写作、设计
科学研究:文献分析、实验设计
教育培训:个性化学习

7.3 职业发展

💡 职业建议

阶段学习重点时间投入
入门期基础概念、工具使用2-3个月
进阶期性能优化、架构设计3-6个月
专业期大规模系统、创新优化6-12个月
专家期架构创新、团队领导1年以上

八、本章小结

8.1 核心要点回顾

本章核心内容

概念理解:明确了大模型工程化vs传统AI工程:核心差异解析的基本定义和核心概念

技术原理:深入探讨了实现方法和核心技术

代码实现:提供了完整的Python代码示例

实践应用:分享了实战案例和最佳实践

问题解答:解答了常见的技术和应用问题

趋势展望:分析了未来发展方向

8.2 学习建议

💡 给读者的建议

① 理论与实践结合:在理解原理的基础上,动手实现
② 循序渐进:从简单优化开始,逐步深入
③ 持续学习:技术发展迅速,保持学习热情
④ 交流分享:加入社区,与同行交流

8.3 下一章预告

下一章将继续探讨相关主题,帮助读者建立完整的知识体系。建议读者在掌握本章内容后,继续深入学习后续章节。


九、课后练习

练习一:概念理解

请用自己的话解释大模型工程化vs传统AI工程:核心差异解析的核心概念,并举例说明其应用场景。

练习二:代码实践

根据本章内容,尝试完成以下任务:

① 搭建基础推理服务
② 实现简单的性能优化
③ 配置监控系统

练习三:案例分析

选择一个你熟悉的场景,分析如何应用本章所学知识解决实际问题。


十、参考资料

10.1 推荐阅读

📄 官方文档

  • Hugging Face Transformers: https://huggingface.co/docs/transformers
  • DeepSpeed: https://www.deepspeed.ai
  • vLLM: https://github.com/vllm-project/vllm

📚 推荐书籍

  • 《大语言模型应用开发》
  • 《深度学习系统设计》
  • 《高性能机器学习》

10.2 在线资源

🔗 学习平台

  • Hugging Face课程
  • NVIDIA深度学习学院
  • Fast.ai课程

10.3 社区交流

💬 社区推荐

  • GitHub开源社区
  • Stack Overflow
  • 知乎AI话题
  • 微信技术群

📖 本章系统讲解了"大模型工程化vs传统AI工程:核心差异解析",希望读者能够学以致用,在实践中不断深化理解。如有疑问,欢迎在评论区交流讨论。

Read more

Promptfoo:AI提示词测试与安全演练神器(以智普GLM为例)

Promptfoo:AI提示词测试与安全演练神器(以智普GLM为例)

1.认识Promptfoo 这是一款专门为LLM应用设计的测试和红队演练框架,目的是帮助开发者自动化评估提示词以及模型的表现。使用 promptfoo,可以批量测试成百上千个测试用例,快速发现模型在安全性、隐私政策、指令遵循方面存在的问题。 2.Promptfoo的核心功能 1. 多模型对比:支持OpenAI、Anthropic、Google、百度千帆等主流模型,也支持自定义API或者本地Python脚本,便于横向对比不同模型对相同提示词的响应; 2. 自动化测试与断言:可以定义大量测试用例,通过 assert 规则(包含特定词语、符合某种格式、通过LLM评判)自动验证输出是否符合预期; 3. 红队安全演练:内置了五十多种漏洞测试插件(越狱、提示注入、有害内容生成),可以模拟攻击者手法,自动生成对抗性输入来检测系统的安全边界; 4. 可视化:测试结果可以通过命令行查看,也可以启动 Web UI 来分析。 3.安装Promptfoo (1)Promptfoo 是基于

如何在 Ubuntu 上安装 OpenClaw (AI 龙虾)

如何在 Ubuntu 上安装 OpenClaw (AI 龙虾)

如何在 Ubuntu 上安装 OpenClaw (AI 龙虾) OpenClaw 近期备受关注,它是一个能够进行对话、浏览网页和管理文件的 AI 助手。以下是在 Ubuntu 系统上安装 OpenClaw 的步骤,帮助用户避免常见问题,快速完成安装。 1. 准备工作:设置环境 OpenClaw 基于 Node.js。建议 Ubuntu 用户安装最新的 Node.js v22 以确保稳定性。 # 更新系统 sudo apt update && sudo apt upgrade -y sudo apt install -y curl git # 安装

Trae AI 保姆级教程:从安装到调试全流程指南

Trae AI 保姆级教程:从安装到调试全流程指南 Trae AI 是字节跳动推出的一款 AI 原生集成开发环境(IDE),专为中文开发者设计,集成了 Claude 3.5 和 GPT-4o 等先进 AI 模型,支持通过自然语言交互实现代码生成、项目构建与调试。本教程将详细介绍 Trae AI 的安装、配置、使用和调试全流程,帮助您快速上手这款强大的开发工具。 一、Trae AI 安装指南 1. 系统要求 在安装 Trae AI 前,请确保您的系统满足以下最低配置要求: * 操作系统:macOS 10.15+ 或 Windows 10/11(Linux 版本暂未推出)

腾讯WorkBuddy微信直连实战:用企业微信WebSocket搭建“AI同事”

腾讯WorkBuddy微信直连实战:用企业微信WebSocket搭建“AI同事”

文章目录 * 一、从“养龙虾”到“国产小龙虾”:打工人的数字替身来了 * 二、WorkBuddy不是聊天框,是带脑子的“AI同事” * 三、企业微信WebSocket长连接:手机遥控电脑的“隐形数据线” * 四、实战配置:1分钟打通企业微信“遥控” * 4.1 下载与基础配置 * 4.2 创建企业微信机器人 * 4.3 开启WebSocket长连接 * 五、C#实战:自己撸一个企业微信WebSocket客户端 * 六、高阶玩法:让AI同事“卷”起来 * 6.1 定时任务:到点自动打工 * 6.2 多Agent并行:几个龙虾一起炒 * 6.3 Skills技能包:零代码扩展能力 * 七、