PyTorch, TensorFlow, FastAPI, LangChain, Hugging Face深度学习框架
·
PyTorch:研发阶段的灵活性和创新速度
TensorFlow:生产环境的大规模部署稳定性
FastAPI:高性能API服务和系统集成
LangChain:LLM应用的快速开发和编排
Hugging Face:预训练模型的标准化使用和优化
PyTorch - 深度学习研发与部署
企业应用案例:智能客服对话系统
项目背景:金融企业需要构建能理解用户意图、生成自然回复的客服机器人。
解决问题:
- 复杂的序列到序列建模任务
- 实时推理性能要求
- 模型快速迭代和实验管理
import torch
import torch.nn as nn
class CustomerServiceModel(nn.Module):
def __init__(self,vocab_size,hidden_size):
super().__init__()
self.encoder = nn.LSTM(vocab_size,hidden_size,batch_first=True)
self.decoder = nn.LSTM(hidden_size,hidder_size,batch_first=True)
self.classifier = nnlLinear(hidden_size,vocab_size)
def forward(self,input_ids,target_ids=None):
encoder_outputs,(hidden,cell) = self.encoder(input_ids)
#解码器逻辑
outputs,_ = self.decoder(encoder_outputs,(hidden,cell))
return self.classifier(outputs)
#模型部署优化
model = CustomerServiceModel(10000,512)
traced_model = torch.jit.trace(model,example_inputs=torch.randint(0, 1000, (1, 50)))
traced_model.save("customer_service_model.pt")
TensorFlow - 大规模生产环境部署
企业应用案例:电商推荐系统
项目背景:为电商平台构建个性化商品推荐系统,处理亿级用户和商品数据。
解决的问题:
- 超大规模稀疏特征处理
- 分布式训练和推理
- 生产环境模型服务稳定性
import tensorflow as tf
from tensorflow.keras.layers import Dense,Embedding,Concatenate
def build_recommendation_model(user_vocab_size,item_vocab_size):
user_input = tf.keras.Input(shape=(1,),name="user_id")
item_input = tf.keras.Input(shape=(1,),name="item_id")
user_embedding = Embedding(user_vocab_size,64)(user_input)
item_embedding = Embedding(item_vocab_size,64)(item_input)
user_vec = tf.squeeze(user_embedding,axis=1)
item_vec = tf.squeeze(item_embedding,axis=1)
concat = Concatenate()([user_vec,item_vec])
output = Dense(1,activation='sigmoid')(concat)
model = tf.keras.Model(inputs=[user_input,item_input],outputs=output)
return model
#使用TFX进行生产流水线
from tfx.components import Trainer
trainer = Trainer(
module_file = os.path.abspath("recommendation_model.py")
examples = transform.outputs['transformed_examples']
schema = schema_gen.outputs['schema'],
train_args = trainer_pb2.TrainArgs(num_steps=10000),
eval_args = trainer_pb2.EvalArgs(num_steps=5000)
)
FastAPI - 高性能模型服务API
企业应用案例:实时欺诈检测系统
项目背景:金融机构需要实时检测交易欺诈行为,要求低延迟、高并发。
解决的问题:
- 微服务架构下的API标准化
- 高并发请求处理
- 自动API文档生成
- 请求验证和序列化
from fastapi import FastAPI,HTTPException
from pydantic import BaseModel
import numpy as np
import joblib
app = FastAPI(title="欺诈检测API",version="1.0.0")
class TransactionRequest(BaseModel):
transaction_amount:float
user_age:int
historical_fraud_rate:float
time_since_last_transaction:float
class FraudResponse(BaseModel):
is_fraud:bool
confidence:float
risk_level:str
@app.post("/predict",response_model=FraudResponse)
async def predict_fraud(transaction:TransactionRequest):
try:
#加载预训练模型
model = joblib.load("fraud_detection_model.pkl")
features = np.array(
[[
transaction.transaction_amount,
transaction.user_age,
transaction.historical_fraud_rate,
transaction.time_since_last_transaction
]]
)
prediction = model.predict(features)[0]
probability = model.predict_proba(features)[0][1]
risk_level = "high" if probability > 0.8 else "medium" if probability > 0.5 else "low"
return FraudResponse(
is_fraud = bool(prediction),
confidence=float(probability),
risk_level=risk_level
)
except Exception as e:
raise HTTPException(status_code=500,detail=str(e))
# 启动命令:uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4
LangChain - 大语言模型应用开发

"""
pip install langchain langchain-community langchain-ollama dashscope chromadb -i https://pypi.tuna.tsinghua.edu.cn/simple
"""
企业应用案例:智能知识库问答系统
项目背景:企业内部知识分散,需要统一的智能问答入口。
解决的问题:
- 多源数据集成(文档、数据库、API)
- 上下文感知的对话管理
- 检索增强生成(RAG)
- 工具调用和外部系统集成
from langchain.chains import RetrievalQA
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstors import Chroma
from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.llms import OpenAI
from langchain.agents import initialize_agent,Tool
from langchain.memory import ConversationBufferMemory
class KnowledgeBaseQA:
def __init__(self,model_name="gpt-3.5-turbo"):
#文档加载和预处理
loader = DirectoryLoader('./knowledge_docs', glob="**/*.pdf")
documents = loader.load()
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,chunk_overlap=200
)
texts = text_splitter.split_documents(documents)
#向量数据库
embeddings = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2")
self.vecotrstore = Chroma.from_documents(texts,embeddings)
#检索链
self.qa_chain = RetrievalQA.from_chain_type(
llm = OpenAI(model_name=model_name,temperature=0),
chain_type="stuff",
retriever=self.vectorstore.as_retriever(),
return_source_documents=True
)
#对话记忆
self.memory = ConversationBufferMemory(memory_key="chat_history")
def query(self,question:str) -> dict:
return self.qa_chain({"query":question})
#企业级使用
kb_qa = KnowledgeBaseQA()
response = kb_qa.query("我们公司的请假政策是什么?")
print(response['result'])
Hugging Face - 预训练模型与应用
企业应用案例:多语言情感分析平台
项目背景:跨国企业需要监控全球社交媒体上的品牌声誉。
解决的问题:
- 多语言文本理解
- 零样本学习和小样本适应
- 模型微调和优化
- 标准化模型部署
from transformers import(
AutoTokenizer,
AutoModelForSequenceClassification,
pipeline,
TrainingArgemtns,
Trainer
)
from datasets import Dataset
import pandas as pd
class MultilingualSentimentAnlayzer:
def __init__(self):
self.model_name = "cardiffnlp/twitter-xlm-roberta-base-sentiment"
self.tokenizer = AutoTokenizer.from_pretrained(self.model_name)
self.classifier = pipeline(
"sentiment-analysis",
model=self.model,
tokenizer = self.tokenizer
)
def analyze_batch(self,texts:list,languages:list=None):
"""批量情感分析"""
results = self.classifier(texts)
return [
{
"text":text,
"sentiment":result['label'],
"score":result['score'],
"language":lang if languages else "auto"
}
for text,result,lang in zip(texts,results,lanauages or [])
]
def fine_tune(self,train_data:pd.DataFrame,output:dir:str):
"""微调模型适应特定领域"""
dataset = Dataset.from_pandas(train_data)
def tokenize_function(examples):
return self.tokenizer(
examples["text"],
padding="max_length",
truncation=True,
max_length=128
)
tokenized_dataset = dataset.map(tokenize_function, batched=True)
training_args = TrainingArguments(
output_dir=output_dir,
num_train_epochs=3,
per_device_train_batch_size=16,
warmup_steps=500,
weight_decay=0.01,
logging_dir='./logs',
)
trainer = Trainer(
model=self.model,
args=training_args,
train_dataset=tokenized_dataset,
)
trainer.train()
trainer.save_model()
#企业应用
analyzer = MultilingualSentimentAnalyzer()
texts = ["I love this product!", "产品质量太差了", "C'est incroyable!"]
results = analyzer.analyze_batch(texts)
for result in results:
print(f"Text: {result['text']} | Sentiment: {result['sentiment']}")
框架组合实战:智能客服增强系统
# 架构整合示例
from fastapi import FastAPI
from langchain.chains import LLMChain
from transformers import pipeline
import torch
import tensorflow as tf
app = FastAPI()
class EnhancedCustomerService:
def __init__(self):
# 意图分类(TensorFlow)
self.intent_classifier = tf.keras.models.load_model('intent_model.h5')
# 情感分析(Hugging Face)
self.sentiment_analyzer = pipeline("sentiment-analysis")
# 对话生成(PyTorch + LangChain)
self.llm_chain = LLMChain(llm=OpenAI(), prompt=prompt_template)
async def process_query(self, user_input: str):
# 多模型协同工作
intent = self.intent_classifier.predict([user_input])
sentiment = self.sentiment_analyzer(user_input)[0]
if intent == "complaint" and sentiment['label'] == "NEGATIVE":
# 紧急情况处理
return await self.handle_urgent_case(user_input)
else:
# 普通问答
return self.llm_chain.run(user_input)
企业项目建议
①、研发阶段选择PyTorch
- 优势:动态图调试效率高,社区资源丰富
- 案例:算法团队快速验证新模型结构
②、生产部署选择TensorFlow
- 优势:TF Serving性能稳定,TFLite边缘部署成熟
- 案例:云端API服务日均百万请求
③、国产化项目选择PaddlePaddle
- 优势:华为昇腾芯片深度优化,免费OCR/VIP等预训练模型
- 案例:工厂产线质检设备国产化替代
PyTorch实现(pytorch_defect_detection.py)
import torch
import torch.nn as nn
import torch.optim as optim
import torchvision
from torch.utils.data import DataLoader
# 设备配置
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# CNN模型定义
class DefectDetector(nn.Module):
def __init__(self):
super().__init__()
self.features = nn.Sequential(
nn.Conv2d(3,32,kernel_size=3,padding=1),
nn.ReLU(),
nn.MaxPool2d(2),
nn.Conv2d(32,64,kernel_size=3,padding=1),
nn.ReLU(),
nn.MaxPool2d(2)
)
self.classifier = nn.Sequential(
nn.Linear(64 * 8 * 8,256),
nn.ReLU(),
nn.Linear(256,10)
)
def forward(self,x):
x = self.features(x)
x = torch.flatten(x,1)
x = self.classifier(x)
return x
# 训练函数
def train_pytorch():
# 数据加载
transform = torchvision.transforms.Compose([
torchvision.transforms.ToTensor(),
torchvision.transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])
trainset = torchvision.datasets.CIFAR10()
trainloader = DataLoader()
# 初始化
model = DefectDetector().to(device)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(),lr=0.001)
# 训练循环
for epoch in range(10):
running_loss = 0.0
for i,data in enumerate(trainloader,0):
inputs,labels = data[0].to(device),data[1].to(device)
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs,labels)
loss.backward()
optimizer.step()
renning_loss += loss.item()
print(f'Epoch {epoch+1}, Loss: {running_loss/len(trainloader):.3f}')
# 保存模型
torch.save(model.state_dict(),"pytorch_defect.pth")
print("PyTorch model saved")
# 企业级特性,动态图调试
if __name__ == "__main__":
train_pytorch()
TensorFlow实现 (tf_defect_detection.py)
import tensorflow as tf
from tensorflow.keras import layers,models
# 数据管道
def load_data_tf():
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data()
x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0
return (x_train, y_train), (x_test, y_test)
# 模型定义
def create_tf_model():
model = models.Sequential([
layers.Conv2D(32, (3,3), activation='relu', input_shape=(32,32,3)),
layers.MaxPooling2D((2,2)),
layers.Conv2D(64, (3,3), activation='relu'),
layers.MaxPooling2D((2,2)),
layers.Flatten(),
layers.Dense(256, activation='relu'),
layers.Dense(10)
])
return model
# 训练函数
def train_tensorflow():
# 数据加载
(x_train,y_train),_ = load_data_tf()
# 模型构建
model = create_tf_model()
model.compile(
optimizer='adam',
loss=tf.keras.lossed.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy']
)
# 回调函数(企业级监控)
callbacks = [
tf.keras.callbacks.ModelCheckpoint("tf_defect.h5",save_best_only=True),
tf.keras.callbacks.EarlyStopping(patience=2,monitor='loss')
]
# 分布式训练(多GPU支持)
strategy = tf.distribute.MirroredStrategy()
with strategy.scope():
model = create_tf_model()
model.compile(...)
#训练
history = model.fit(x_train,y_train,
epochs=10,
batch_size=128,
validation_split=0.2,
callbacks=callbacks)
# 转换为TFLite用于边缘部署
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.converter()
with open('defect_detector.tflite', 'wb') as f:
f.write(tflite_model)
print("TensorFlow model saved and converted to TFLite")
# 企业级特性:静态图优化、生产部署完善
if __name__ == "__main__":
train_tensorflow()
PaddlePaddle实现 (paddle_defect_detection.py)
import paddle
import paddle.nn as nn
import paddle.vision.transforms as T
from paddle.vision.datasets import Cifar10
# 飞桨专用模型
class PaddleDefectNet(nn.Layer):
def __init__(self):
super().__init__()
self.conv = nn.Sequential(
nn.Conv2D(3, 32, 3, padding=1),
nn.ReLU(),
nn.MaxPool2D(2),
nn.Conv2D(32, 64, 3, padding=1),
nn.ReLU(),
nn.MaxPool2D(2)
)
self.fc = nn.Sequential(
nn.Linear(64 * 8 * 8, 256),
nn.ReLU(),
nn.Linear(256, 10)
)
def forward(self.x):
x = self.conv(x)
x = paddle.flatten(x)
return x
# 训练函数
def train_paddle():
# 数据增强(工业场景关键)
transform = T.Compose([
T.RandomHorizontalFlip(),
T.RandomRotation(15),
T.ToTensor(),
T.Normalize(mean=[0.5, 0.5, 0.5],std=[0.5, 0.5, 0.5])
])
# 加载数据
train_dataset = Cifar10(mode='train',transform=transform)
train_loader = paddle.io.DataLoader(train_dataset,batch_size=128,shuffle=True)
# 模型初始化
model = PaddleDefectNet()
model.train()
opt = paddle.optimizer.Adam(parameters=model.parameters())
loss_fn = nn.CrossEntropyLoss()
# 国产硬件适配(昇腾/NPU)
if paddle.is_compiled_with_custom_device('npu'):
place = paddle.CustomPlace('npu',0)
model = paddle.Model(model,place)
# 训练循环
for epoch in range(10):
for batch_id,data in enumerate(train_loader()):
images,labels = data
logits = model(images)
loss = loss_fn(logits,labels)
loss.backward()
opt.step()
opt.clear_grad()
if batch_id % 100 == 0:
print(f"Epoch {epoch} Batch {batch_id} Loss: {loss.numpy()[0]:.4f}")
#导出为飞桨格式
paddle.jit.save(model, "paddle_defect")
# 转换为ONNX用于跨平台部署
from paddle2onnx import export
export(model, "paddle_defect.onnx")
print("PaddlePaddle model saved and exported")
# 企业级特性:国产化适配、端侧部署工具链
if __name__ == "__main__":
train_paddle()
更多推荐
所有评论(0)