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

  • 安装与初始化

    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])
    
### 魔搭社区简介 魔搭(ModelScope)是一个由阿里巴巴达摩院推出的模型开放平台,致力于为开发者提供丰富的机器学习深度学习模型资源。通过这一平台,用户可以轻松访问、下载并使用各种预训练模型,从而降低开发门槛,提升研发效率[^1]。 ### 主要功能 #### 1. **模型共享** 魔搭支持多种类型的模型上传与分享,涵盖了自然语言处理、计算机视觉等多个领域。无论是学术研究还是工业应用,都可以找到适合的模型进行快速部署[^2]。 #### 2. **在线推理服务** 部分热门模型提供了在线API接口调用的功能,无需本地环境配置即可完成简单的测试验证工作。这对于初学者或者希望快速评估某个特定算法效果的人群来说非常友好[^3]。 #### 3. **代码示例与教程** 为了帮助使用者更好地理解运用这些复杂的神经网络结构,官方还精心准备了一系列详尽的技术文档及实战案例分析资料。其中包括但不限于Python脚本编写指南、性能优化技巧等方面的内容[^4]。 ```python import torch from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("model_name") model = AutoModelForSequenceClassification.from_pretrained("model_name") def predict(text): inputs = tokenizer(text, return_tensors="pt") outputs = model(**inputs) logits = outputs.logits probabilities = torch.nn.functional.softmax(logits, dim=-1).tolist()[0] return {"positive": probabilities[1], "negative": probabilities[0]} ``` 上述代码片段展示了如何利用Hugging Face库加载一个序列分类任务中的情感分析模型,并对其进行预测操作的一个基本流程演示[^5]。 ### 社区项目举例 - **CIFAR-10图像识别挑战赛解决方案** 此方案基于ResNet架构构建而成,在保持较高准确率的同时兼顾了运行速度上的优势;另外还有针对移动端设备做了专门适配版本可供选择。 - **中文文本摘要生成工具包** 采用Seq2Seq加注意力机制设计思路打造而成的产品级应用程序实例之一,能够有效提取文章核心要点信息呈现给最终读者群体阅读参考之需。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeSilence

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值