1. 概述
提起大模型平台,不得不提的便是 ModelScope 和 Hugging Face 平台,它们都属于人工智能模型开源社区及创新平台。本文将简单介绍这两个平台的特点及常用 API,帮助您更好地了解和使用大模型。
- ModelScope:由阿里巴巴通义实验室联合CCF开源发展委员会于2022年6月创立。该平台提供模型库、数据集和创空间等功能,涵盖计算机视觉、自然语言处理、语音、多模态等多个领域的任务,与清华、北大、浙大等20多所中国顶级高校展开学术合作,打造以MaaS为核心的AI开发新范式,其社区文化是“共享·共创·共进,构建持续创新的AI开源生态”。
- Hugging Face:是2016年成立的开源人工智能创业公司,专注于NLP技术。其提供一系列预训练的AI模型,构建了包括自然语言处理库、模型库、数据集等在内的完整开源产品矩阵,建立了包含开发者社区等的AI开发生态,还围绕NLP、Vision等方向为客户提供定制化解决方案以获取技术服务费用。
2. 平台对比
特性 | ModelScope(魔搭) | Hugging Face |
---|---|---|
开发方 | 阿里巴巴 | Hugging Face Inc. |
主要定位 | 中文场景优化,阿里生态集成 | 全球领先的开源模型社区 |
模型侧重 | 中文大模型、多模态、行业模型 | 全品类模型(NLP/CV/语音等) |
数据集 | 中文数据集丰富 | 全球最大开源数据集库之一 |
部署方式 | 支持阿里云一键部署 | 本地/云灵活部署 |
开源协议 | 部分模型商用需授权 | 多数模型完全开源(Apache/MIT) |
3. 常用API示例
3.1 ModelScope
-
安装与初始化
pip install modelscope
-
模型下载
from modelscope import snapshot_download, AutoModel, AutoTokenizer # 下载模型(阿里云镜像加速)local_dir可指定下载路径,cache_dir指定缓存路径 model_dir = snapshot_download('qwen/Qwen-1_8B-Chat')
-
调用对话模型
from modelscope import AutoModelForCausalLM from transformers import AutoTokenizer model_path = "your/model/path" model = AutoModelForCausalLM.from_pretrained(model_path, device_map='auto') tokenizer = AutoTokenizer.from_pretrained( model_path, trust_remote_code=True ) response = model.chat( tokenizer=tokenizer, # 新增必要参数 query="你好", history=[], system="你是一个有帮助的AI助手" # 可选系统提示 ) print(response)
-
数据集下载
import json import os from modelscope import MsDataset def write_file(file_path, content, content_type="json", encoding="utf-8"): with open(file_path, "w", encoding="utf-8") as f: if content_type == "json": json.dump(content, f, ensure_ascii=False, indent=2) name = "" cache_dir = "" local_dir = "" dataset = MsDataset.load( name, cache_dir=cache_dir, trust_remote_code=True, subset_name="default", ) if isinstance(dataset, dict): # 多分片数据集 for split, split_dataset in dataset.items(): split_file = os.path.join(local_dir, f"{split}.json") split_data = [example for example in split_dataset] write_file(split_file, split_data, content_type="json") print( f"保存数据集[{name}] 分片[{split}]数据到文件:{split_file}]" ) else: # 单分片数据集 data = [example for example in dataset] data_file = os.path.join(local_dir, "dataset.json") write_file(data_file, data, content_type="json") print( f"保存数据集[{name}] 数据到文件:{data_file}" )
3.2 Hugging Face
-
安装与初始化
pip install transformers datasets
-
模型下载
from huggingface_hub import snapshot_download snapshot_download( repo_id=name, local_dir=local_dir, cache_dir=cache_dir )
-
调用文本模型
from transformers import AutoModelForCausalLM, AutoTokenizer model = AutoModelForCausalLM.from_pretrained('meta-llama/Llama-2-7b-chat-hf') tokenizer = AutoTokenizer.from_pretrained('meta-llama/Llama-2-7b-chat-hf') inputs = tokenizer("Hello!", return_tensors="pt") outputs = model.generate(**inputs) print(tokenizer.decode(outputs[0]))
-
使用推理API(无需本地部署)
import requests API_URL = "https://api-inference.huggingface.co/models/gpt2" headers = {"Authorization": "Bearer YOUR_TOKEN"} def query(payload): response = requests.post(API_URL, headers=headers, json=payload) return response.json() output = query({"inputs": "Explain AI in simple terms"}) print(output)
-
数据集下载
import json import os from datasets import load_dataset def write_file(file_path, content, content_type="json", encoding="utf-8"): with open(file_path, "w", encoding="utf-8") as f: if content_type == "json": json.dump(content, f, ensure_ascii=False, indent=2) name = "" cache_dir = "" local_dir = "" dataset = load_dataset( name, cache_dir=cache_dir, trust_remote_code=True ) # 多分片数据集 for split, data in dataset.items(): split_file = os.path.join(local_dir, f"{split}.json") write_file(split_file, data.to_list(), content_type="json") print( f"数据集[{name}][{split}] 本地保存目录: {split_file}" ) print( f"数据集[{name}] 下载完成!缓存目录:{cache_dir}" )
-
数据集加载
from datasets import load_dataset dataset = load_dataset('imdb', split='train[:10]') print(dataset[0])