HuggingFace中的 Files and versions 如何优雅下载到本地?(Python requests,tqdm)

前言

在使用huggingface把玩各种大模型时,如果选择从远程加载模型,这个过程可能因为网络问题而非常耗时甚至直接失败,所以把模型、分词器等相关文件下载到本地,再直接从本地加载就成了不可回避的流程。

在进入具体版本的模型后,我们可以去Files and Versions这个菜单项下面找到需要下载到本地的全部模型(以WizardCoder为例)

第一步是获取我们想要下载的文件的下载时url

在文件大小的右侧,可以看到一个向下的箭头表示下载,鼠标移动到箭头上,右键,选择“复制链接地址”,这样就得到了下载时url

我们将这些url存放到list中。

第二步就是python代码,这里除了用于请求的request库,我还使用了tqdm库,tqdm也可通过pip install来安装,它的作用是在下载较大的文件时,我们可以在终端看到下载的速度和进度

import requests
import os
from tqdm import tqdm

urls = [
    "https://huggingface.co/WizardLM/WizardCoder-15B-V1.0/resolve/main/pytorch_model.bin"
]

filepath = "WizardCoder/WizardCoder-15B-V1.0"


def download_file(url):
    filename = url.split("/")[-1]
    download_path = os.path.join(filepath, filename)

    response = requests.get(url, stream=True, verify=False)
    response.raise_for_status()

    file_size = int(response.headers.get("Content-Length", 0))  # 获取待下载的文件大小
    chunk_size = 8192  # 读取的数据块的大小是8千字节
    
    with open(download_path, "wb") as file, tqdm(
        total=file_size, unit="B", unit_scale=True, unit_divisor=1024, desc=filename
    ) as progress_bar:
        for chunk in response.iter_content(chunk_size=chunk_size):
            if chunk:
                file.write(chunk)
                progress_bar.update(1)


for url in urls:
    download_file(url)

### 使用Python与Figma API进行交互 为了通过Python与Figma进行交互或执行自动化操作,开发者通常依赖于官方提供的RESTful API接口。这些API允许外部程序读取文件信息、创建新对象以及修改现有设计文档的内容。 #### 安装必要的库 要开始使用Python访问Figma API,首先需要安装`requests`库来发送HTTP请求: ```bash pip install requests ``` #### 获取OAuth Token 由于Figma采用OAuth 2.0授权机制保护其API服务,因此在发起任何调用之前,必须先获取有效的个人访问令牌(Personal Access Token)[^1]。这可以通过登录到自己的Figma账户并按照官方指南生成相应的Token完成。 #### 发送基本GET请求 下面是一个简单的例子,展示了如何利用Python向Figma发出GET请求以检索特定项目的详情: ```python import requests # 替换成实际的项目ID和个人访问令牌 project_id = "your_project_id" access_token = "your_access_token" url = f"https://api.figma.com/v1/projects/{project_id}" headers = { 'X-Figma-Token': access_token, } response = requests.get(url, headers=headers) if response.status_code == 200: project_info = response.json() print(project_info) else: print(f"Failed to fetch data: {response.text}") ``` 此段代码会尝试连接至指定URL地址,并附带必需的身份验证头信息;如果成功,则返回JSON格式的数据表示所选项目的元数据。 #### 创建新的文件版本 除了查询已有资源外,还可以借助POST方法提交更改命令给服务器端,比如上传最新版的设计稿或是更新某些属性设置等动作。这里给出一段用来增加新版本实例的小片段作为示范用途: ```python file_key = "your_file_key" # 文件唯一标识符 comment = "Adding new version via Python script." data = {"message": comment} version_url = f"https://api.figma.com/v1/files/{file_key}/versions" create_version_response = requests.post(version_url, json=data, headers=headers) print(create_version_response.content.decode()) ``` 上述脚本将为关联的目标文件建立一个新的修订记录条目,并附加一条简短的消息说明变动原因。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CSU迦叶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值