logo
Hugging Face 模型库指南
AI Engineer

Hugging Face 模型库指南

Hugging Face 是最大的 AI 模型社区,提供数万个预训练模型和便捷的部署工具。

Hugging Face 模型库指南Hugging Face 简介

Hugging Face 简介

Hugging Face 是 AI/ML 领域最大的开源社区和模型平台。它提供了数十万个预训练模型、数据集,以及强大的 Transformers 库,是现代 AI 开发的基础设施。

#为什么使用 Hugging Face?

#1. 最大的模型库

超过 50 万个模型:

  • LLM:Llama、Mistral、Qwen
  • Embedding:BGE、E5、Instructor
  • 图像:Stable Diffusion、CLIP
  • 音频:Whisper、Bark

#2. 开源生态

完整的工具链:

  • Transformers:模型使用
  • Datasets:数据集管理
  • Accelerate:分布式训练
  • PEFT:参数高效微调
  • Hub:模型托管

#3. 免费使用

服务免费额度
模型下载无限
Inference API有限免费
Spaces免费托管
私有模型需付费

#核心组件

#Transformers 库

使用预训练模型的标准方式:

python
from transformers import pipeline # 文本生成 generator = pipeline("text-generation", model="gpt2") result = generator("AI 技术正在", max_length=50) print(result[0]["generated_text"]) # 文本分类 classifier = pipeline("sentiment-analysis") result = classifier("这个产品太棒了!") print(result) # [{'label': 'POSITIVE', 'score': 0.99}] # 问答 qa = pipeline("question-answering") result = qa(question="什么是 Python?", context="Python 是一种编程语言...")

#Embedding 模型

生成文本向量:

python
from sentence_transformers import SentenceTransformer # 加载模型 model = SentenceTransformer("BAAI/bge-small-zh-v1.5") # 生成向量 sentences = ["这是第一个句子", "这是第二个句子"] embeddings = model.encode(sentences) print(embeddings.shape) # (2, 512)

#模型 Hub

下载和上传模型:

python
from huggingface_hub import HfApi, snapshot_download # 下载模型 model_path = snapshot_download(repo_id="BAAI/bge-small-zh-v1.5") # 上传模型 api = HfApi() api.upload_folder( folder_path="./my_model", repo_id="username/my-model", repo_type="model" )

#快速开始

#安装

bash
pip install transformers pip install sentence-transformers # Embedding 模型 pip install huggingface_hub # Hub 操作 pip install accelerate # GPU 加速

#基础使用

python
from transformers import AutoTokenizer, AutoModel import torch # 1. 加载模型和分词器 model_name = "BAAI/bge-small-zh-v1.5" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModel.from_pretrained(model_name) # 2. 编码文本 text = "Hugging Face 是一个 AI 开源社区" inputs = tokenizer(text, return_tensors="pt", padding=True) # 3. 获取向量 with torch.no_grad(): outputs = model(**inputs) embeddings = outputs.last_hidden_state.mean(dim=1) print(embeddings.shape) # torch.Size([1, 512])

#常用 Embedding 模型

#中文模型

模型维度特点
BAAI/bge-small-zh-v1.5512轻量快速
BAAI/bge-base-zh-v1.5768平衡选择
BAAI/bge-large-zh-v1.51024高精度

#多语言模型

模型维度特点
sentence-transformers/all-MiniLM-L6-v2384轻量英文
intfloat/multilingual-e5-small384多语言
BAAI/bge-m31024多语言最强

#使用示例

python
from sentence_transformers import SentenceTransformer # 中文场景推荐 model = SentenceTransformer("BAAI/bge-small-zh-v1.5") # 多语言场景 model = SentenceTransformer("BAAI/bge-m3") # 快速英文场景 model = SentenceTransformer("all-MiniLM-L6-v2")

#Inference API

在线调用模型:

python
import requests API_URL = "https://api-inference.huggingface.co/models/gpt2" headers = {"Authorization": f"Bearer {HF_TOKEN}"} def query(payload): response = requests.post(API_URL, headers=headers, json=payload) return response.json() output = query({"inputs": "The future of AI is"}) print(output)

#免费 Embedding API

python
import requests API_URL = "https://api-inference.huggingface.co/pipeline/feature-extraction/BAAI/bge-small-zh-v1.5" headers = {"Authorization": f"Bearer {HF_TOKEN}"} def get_embedding(text): response = requests.post(API_URL, headers=headers, json={"inputs": text}) return response.json() embedding = get_embedding("你好世界")

#与 LangChain 集成

python
from langchain_huggingface import HuggingFaceEmbeddings from langchain_community.vectorstores import FAISS # 使用 HuggingFace Embedding embeddings = HuggingFaceEmbeddings( model_name="BAAI/bge-small-zh-v1.5" ) # 创建向量存储 vectorstore = FAISS.from_texts( texts=["文档1", "文档2"], embedding=embeddings ) # 相似性搜索 docs = vectorstore.similarity_search("查询", k=3)

#与 LlamaIndex 集成

python
from llama_index.embeddings.huggingface import HuggingFaceEmbedding from llama_index.core import Settings, VectorStoreIndex, SimpleDirectoryReader # 设置 Embedding 模型 Settings.embed_model = HuggingFaceEmbedding( model_name="BAAI/bge-small-zh-v1.5" ) # 加载文档并创建索引 documents = SimpleDirectoryReader("./data").load_data() index = VectorStoreIndex.from_documents(documents) # 查询 query_engine = index.as_query_engine() response = query_engine.query("问题")

#Spaces:托管 AI 应用

#Gradio 应用

python
import gradio as gr from sentence_transformers import SentenceTransformer model = SentenceTransformer("BAAI/bge-small-zh-v1.5") def get_embedding(text): embedding = model.encode(text) return str(embedding[:10]) + "..." demo = gr.Interface( fn=get_embedding, inputs="text", outputs="text", title="文本向量生成器" ) demo.launch()

#部署到 Spaces

  1. 创建 requirements.txt
  2. 创建 app.py(Gradio 或 Streamlit)
  3. 推送到 Hugging Face Space

#本地运行 LLM

#使用 Transformers

python
from transformers import AutoModelForCausalLM, AutoTokenizer import torch # 加载模型 model_name = "Qwen/Qwen2-0.5B" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype=torch.float16, device_map="auto" ) # 生成文本 inputs = tokenizer("Python 是", return_tensors="pt") outputs = model.generate(**inputs, max_new_tokens=50) print(tokenizer.decode(outputs[0]))

#使用 Text Generation Inference (TGI)

bash
# Docker 部署 docker run --gpus all -p 8080:80 \ ghcr.io/huggingface/text-generation-inference:latest \ --model-id mistralai/Mistral-7B-v0.1

#模型微调

#使用 PEFT (LoRA)

python
from peft import LoraConfig, get_peft_model from transformers import AutoModelForCausalLM # 加载基础模型 model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf") # 配置 LoRA lora_config = LoraConfig( r=8, lora_alpha=32, target_modules=["q_proj", "v_proj"], lora_dropout=0.1 ) # 应用 LoRA model = get_peft_model(model, lora_config) print(f"可训练参数: {model.print_trainable_parameters()}")

#定价

服务价格
公开模型免费
Inference API (免费)有限调用
Inference Endpoints$0.06/小时起
PRO 订阅$9/月
Enterprise Hub联系销售

#最佳实践

#1. 选择合适的模型

python
# 场景 1:快速原型(小模型) model = SentenceTransformer("all-MiniLM-L6-v2") # 384 维 # 场景 2:中文生产环境 model = SentenceTransformer("BAAI/bge-base-zh-v1.5") # 768 维 # 场景 3:多语言场景 model = SentenceTransformer("BAAI/bge-m3") # 1024 维

#2. 缓存模型

python
import os # 设置缓存目录 os.environ["HF_HOME"] = "/path/to/cache" os.environ["TRANSFORMERS_CACHE"] = "/path/to/cache" # 模型会自动缓存到该目录

#3. 离线使用

python
# 先下载模型 from huggingface_hub import snapshot_download snapshot_download("BAAI/bge-small-zh-v1.5", local_dir="./models/bge") # 离线加载 model = SentenceTransformer("./models/bge")

#下一步


提示:Hugging Face 是 AI 开发的基础设施,掌握它可以让你快速使用各种开源模型。

1v1免费职业咨询