ModelScope vs Hugging Face:中文开发者该如何选择?附API实战对比

1. 概述

提起大模型平台,不得不提的便是 ModelScopeHugging 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

  • 安装与初始化

    1
    pip install modelscope
  • 模型下载

    1
    2
    3
    4
    from modelscope import snapshot_download, AutoModel, AutoTokenizer

    # 下载模型(阿里云镜像加速)local_dir可指定下载路径,cache_dir指定缓存路径
    model_dir = snapshot_download('qwen/Qwen-1_8B-Chat')
  • 调用对话模型

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    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)

  • 数据集下载

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    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

  • 安装与初始化

    1
    pip install transformers datasets
  • 模型下载

    1
    2
    3
    4
    5
    from huggingface_hub import snapshot_download

    snapshot_download(
    repo_id=name, local_dir=local_dir, cache_dir=cache_dir
    )
  • 调用文本模型

    1
    2
    3
    4
    5
    6
    7
    8
    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(无需本地部署)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    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)
  • 数据集下载

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    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}"
    )

  • 数据集加载

    1
    2
    3
    4
    from datasets import load_dataset

    dataset = load_dataset('imdb', split='train[:10]')
    print(dataset[0])

ModelScope vs Hugging Face:中文开发者该如何选择?附API实战对比
https://blog.echo-silence.top/posts/31d657e2.html
作者
极客奶爸
发布于
2025年5月17日
许可协议