下载HuggingFace大模型上传到Modelscope模型库

简介: 下载大模型,都是通过huggingface。以前Llama 2的下载,必须通过Meta才能下载,直接使用Meta的代码去Meta官方下载,国内是很容易中断,导致无法下载。现在你通过了Meta申请通过后,可以直接在huggingface进行下载。

建议

  • ModelScope社区建议,notebook提供的免费虚拟机,磁盘容量升级到200G,不然很多工作是无法进行的。量化模型,是需要更多的空间,哪怕从虚拟机里上传到模型库,还需要缓存一份,导致空间不够使用。
  • 产品上,就好好学习colab。人家是容器,ModelScope是虚拟机。
  • 尽力和世界同步啊。
  • 模型库的存储,需要更加给力,这样我可以从colab直接上传到模型库,去重,秒传的功能。
  • notebook搞的好用一点,大家分享自己的notebook,帮助更多朋友更快熟悉,复用经验。
  • 产品联动,网盘和魔搭的虚拟机联动,可以从虚拟机里直接挂载。
  • notebook运行代码出错,通义千问,帮忙解决一下。这些都是可以参考google的colab。

介绍

国内从HuggingFace 下载大模型,也不容易,目前国内已经是无法直接访问HuggingFace。各种的mirror,代理,其实都很难保证你成功下载。

我需要把下载的大模型,放到阿里的ModelScope模型库,方便我使用ModelScope提供的虚拟机进行大模型微调。

没有太好的一步到位的办法,只能通过中转多次,才上传到ModelScope的模型库

HuggingFace --> Colab --> 阿里云盘 --> ModelScope虚拟机--> ModelScope模型库

本来最简单的方式,应该是Colab下载完成后,直接上传到ModelScope模型库,这个是没问题的。通过ModelScope API 是可以实现,就是速度太慢,缺少网盘秒传的功能,只能放弃。

采用这个方案的优势

  • colab下载大模型速度快,大约5分钟。
  • 阿里云盘上传快,因为网盘秒传特性,多大的模型基本都是3分钟。
  • 网盘的CLI,可以快速下载到阿里的虚拟机上,大约5-10分钟。
  • Git或Python SDK上传大模型到ModelScope模型库,速度保证,大约10分钟。

国外的网速和阿里云内部的网速是差不多的。一个100G 的大模型,无论下载和上传,都不是一件容易的事情,对基础设施,真的是一个很大的考验。尤其大模型的微调,就类似开发的CI过程,对git仓库是一个考验。

使用Llama-2-7b这个大模型做例子。colab代码,基本都是参考huggingface-China

感谢作者的分享,在调整过程中,确实是学到不少东西。

colab

这个colab,已经很完美。大家体验一下。我是提前把注释和代码填上,包括token,确认没有问题,再逐步运行,还可以选择:runtime-->run all 全部运行,比脚本运行还爽,提前把token填好,整个过程已经是无需交互。

Colab

# 安装需要的包
!pip install gradio huggingface_hub aligo

# import
import os
import shutil
import huggingface_hub as hh
import pandas as pd

# 下载llama 2,需要使用HuggingFace的token通过验证才能下载,其他模型,这一步可以省掉。
!huggingface-cli login --token hf_ziljuWSLzXXrlDvrUuB

# 下载模型,设置huggingface的repo_id,更换不同的模型,
# 只需要在repo_id设置就可以。其他地方无需调整。
repo_id = "meta-llama/Llama-2-7b"
repo_name = repo_id.replace("/","---")

# 定义容量显示和下载路径

def format_size(bytes, precision=2):
    """
    Convert a file size in bytes to a human-readable format like KB, MB, GB, etc.
    Huggingface use 1000 not 1024
    """
    units = ["B", "KB", "MB", "GB", "TB", "PB"]
    size = float(bytes)
    index = 0

    while size >= 1000 and index < len(units) - 1:
        index += 1
        size /= 1000

    return f"{size:.{precision}f} {units[index]}"


def list_repo_files_info(repo_id,token=None):
    data_ls = []
    for file in list(hh.list_files_info(repo_id)):
        data_ls.append([file.path,format_size(file.size)])
    files = [file[0] for file in data_ls]
    data = pd.DataFrame(data_ls,columns = ['文件名','大小'])
    return data, files

# 模型下载到当前目录下的"./download"目录
def download_file(repo_id,filenames):
    print(filenames)
    repo_name = repo_id.replace("/","---")

    for filename in filenames:
        print(filename)
        out = hh.hf_hub_download(repo_id=repo_id,filename=filename,local_dir=f"./download/{repo_name}",local_dir_use_symlinks=False,force_download =True)
    out_path = f"./download/{repo_name}"
    return out_path

查看模型文件大小

# 查看模型的文件
data, filenames = list_repo_files_info(repo_id)
filenames

下载模型

# 开始下载模型
out_path = download_file(repo_id,filenames)

查看模型下载结果

# 查看模型的大小和文件

import os.path
from pathlib import Path
path ="/content/download/"
path=os.path.join(path, repo_name)
print(path)

!du -sh $path
!ls -lsh $path

可以在Colab看到下载的大模型

阿里云盘

这个地方,最麻烦的就是拿到云盘的refresh_token。

参考这里

获取网盘refresh_token

打开Chrome,登录阿里网盘,chrome浏览器的右上角的3个点。或者用快捷方式:ctrl+shift+i

找到应用 标签:

环境配置

下面的操作,其实都是在Colab上进行。

# 上传阿里云盘,填上token
from aligo import Aligo
refresh_token = "自己的token"
ali = Aligo(refresh_token=refresh_token)

# 获取用户信息和获取网盘根目录文件列表
user = ali.get_user()
print(user.user_name, user.nick_name, user.phone)
ll = ali.get_file_list() 
ll

上传模型到阿里网盘

# 无法指定文件夹上传,只能传到根目录下,估计是cli的bug
remote_folder = ali.get_folder_by_path(out_path, create_folder=True)
ali.upload_folder(out_path)

ModelScope虚拟机

我的所有操作,都记录在notebook。包括模型的下载和上传到ModelScope模型库

notebook

登录ModelScope社区,启动虚拟机。

登录虚拟机,可以用终端,也是可以通过notebook,就是比较难用,这次我还尽量在notebook来完成操作。

阿里云盘操作手册

通过阿里云盘CLI,实现大模型下载。

# 云盘linux客户端
!curl -fsSL http://file.tickstep.com/apt/pgp | gpg --dearmor | tee /etc/apt/trusted.gpg.d/tickstep-packages-archive-keyring.gpg > /dev/null && echo "deb [signed-by=/etc/apt/trusted.gpg.d/tickstep-packages-archive-keyring.gpg arch=amd64,arm64] http://file.tickstep.com/apt aliyunpan main" | tee /etc/apt/sources.list.d/tickstep-aliyunpan.list > /dev/null && apt-get update && apt-get install -y aliyunpan

# CLI通过RefreshToken登录
!aliyunpan login -RefreshToken=<网盘的RefreshToken,上传网盘使用的那个RefreshToken>

# 设置下载存储路径
!aliyunpan config set -savedir /mnt

# 查看云盘根目录
!aliyunpan ls

# 下载云盘大模型
!aliyunpan download meta-llama---Llama-2-7b

# 查看下载结果
!du -sh /mnt
!ls -lsh /mnt

云盘CLI,会对目录生成一串数字,目录下,才是模型

# 一串数字改成huggingface
!mv 127d6e7249c548cbb773138c67178ea2 huggingface

ModelScope要求模型上传必须包含configuration.json 文件,所以专门在repo里创建一个空文件。

# 创建一个空文件,满足repo上传ModelScope要求
!touch ./huggingface/meta-llama---Llama-2-7b/configuration.json

ModelScope模型库

把模型上传到模型库,可以用git或SDK。

创建新模型

首先需要在ModelScope模型库,创建一个新的模型

进入创建的模型

目前模型文件只有2个文件

模型上传

参考文档

Python SDK上传模型

获取魔搭的token。上传

# 记得替换ModelScope token,同时更换你的model id
# repo必须包含一个configuration.json文件
from modelscope.hub.api import HubApi
YOUR_ACCESS_TOKEN = 'f368c21f-2ade-4ac0-876f-8bfb5d'
api = HubApi()
api.login(YOUR_ACCESS_TOKEN)
api.push_model(
    model_id="shakechen/Llama-2-7b", 
    model_dir="/mnt/huggingface/meta-llama---Llama-2-7b" 
)

大概10分钟,就上传完毕。可以在模型文件下看到上传的文件。

对比HuggingFace的repo的文件,会发现文件的大小有差异,这个是因为HuggingFace按G是1000M,不是1024M导致的。整个过程,就多了一个configuration.json 空文件。

相关文章
|
人工智能 自然语言处理 IDE
模型微调不再被代码难住!PAI和Qwen3-Coder加速AI开发新体验
通义千问 AI 编程大模型 Qwen3-Coder 正式开源,阿里云人工智能平台 PAI 支持云上一键部署 Qwen3-Coder 模型,并可在交互式建模环境中使用 Qwen3-Coder 模型。
1787 109
|
分布式计算 测试技术 Spark
科大讯飞开源星火化学大模型、文生音效模型
近期,科大讯飞在魔搭社区(ModelScope)和Gitcode上开源两款模型:讯飞星火化学大模型Spark Chemistry-X1-13B、讯飞文生音频模型AudioFly,助力前沿化学技术研究,以及声音生成技术和应用的探索。
1037 2
|
文字识别 算法 语音技术
基于模型蒸馏的大模型文案生成最佳实践
本文介绍了基于模型蒸馏技术优化大语言模型在文案生成中的应用。针对大模型资源消耗高、部署困难的问题,采用EasyDistill算法框架与PAI产品,通过SFT和DPO算法将知识从大型教师模型迁移至轻量级学生模型,在保证生成质量的同时显著降低计算成本。内容涵盖教师模型部署、训练数据构建及学生模型蒸馏优化全过程,助力企业在资源受限场景下实现高效文案生成,提升用户体验与业务增长。
1219 23
|
存储 人工智能 自然语言处理
告别文字乱码!全新文生图模型Qwen-Image来咯
通义千问团队开源了Qwen-Image,一个20B参数的MMDiT模型,具备卓越的文本渲染和图像编辑能力。支持复杂中英文文本生成与自动布局,适用于多场景图像生成与编辑任务,已在魔搭社区与Hugging Face开源。
2191 2
|
人工智能 搜索推荐 程序员
当AI学会“跨界思考”:多模态模型如何重塑人工智能
当AI学会“跨界思考”:多模态模型如何重塑人工智能
1645 120
|
机器学习/深度学习 人工智能 自然语言处理
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
1513 13
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
|
人工智能 算法 测试技术
轻量高效,8B 性能强劲书生科学多模态模型Intern-S1-mini开源
继 7 月 26 日开源『书生』科学多模态大模型 Intern-S1 之后,上海人工智能实验室(上海AI实验室)在8月23日推出了轻量化版本 Intern-S1-mini。
1850 49