中文
本页内容

上传文件

向仓库上传文件必须使用访问令牌

openMind Hub Client通过黑白名单的方式控制要上传文件的路径,文件的绝对路径不能以黑名单中的路径开头(默认缓存路径~/.cache/openmind除外),且必须在白名单中。黑名单为["/etc", "/var", "/bin", "/boot", "/lib", "~/."],白名单在linux下默认为["/tmp", "~/"],windows下为["~/", "D:", "E:", "F:"]。如不满足用户需求,用户可以通过配置环境变量HUB_WHITE_LIST_PATHS(用逗号隔开每个路径)自行配置白名单,同时黑名单权限的优先级大于白名单权限。

注意: 由于模型文件的多样性,用户理论上可以上传任何格式的文件到服务端,模型大小从几MB到几百GB也都有可能,因此openMind Hub Client不限制用户上传的文件的类型和大小,请用户注意文件的敏感性,以免发生敏感信息被上传到服务端的事故。

上传单个文件

使用upload_file向仓库中上传单个文件。示例如下,查看API文档获取支持的详细参数列表:

py
from openmind_hub import upload_file

upload_file(
    token="xxx",
    path_or_fileobj="/path/to/local/space",
    repo_id="username/my-cool-space",
    path_in_repo="Myfile"
)
  • path_in_repo:文件上传到仓库中的路径。
  • token:对目标仓库具有可写权限的访问令牌,必选。
  • path_or_fileobj:要上传的本地文件的路径,必选。
  • repo_id:目标仓库,必选。

上传文件夹

使用upload_folder向仓库中上传文件夹。示例如下,查看API文档获取支持的详细参数列表:

py
from openmind_hub import upload_folder

upload_folder(
    token="xxx",
    folder_path="/path/to/local/space",
    repo_id="username/my-cool-space",
)
  • token:对目标仓库具有可写权限的访问令牌,必选。
  • folder_path:要上传的本地文件夹的路径,必选。
  • repo_id:目标仓库,必选。

若需对上传的文件类型进行过滤,可以使用allow_patternsignore_patterns参数,详见upload_folder

创建提交

使用create_commit手动创建CommitOperationAdd、CommitOperationDelete的操作列表,向仓库中创建提交。示例如下,查看API文档获取支持的详细参数列表:

创建提交,示例如下:

python
from openmind_hub import create_commit, CommitOperationAdd, CommitOperationDelete

operations = [
    CommitOperationAdd(path_in_repo="LICENSE.md", path_or_fileobj="~/repo/LICENSE.md"),
    CommitOperationDelete(path_in_repo="weights.h5"),
]
create_commit(
    repo_id="owner/repo",
    operations=operations,
    commit_message="create commit",
    token="xxx",
)
  • repo_id(str):目标仓库,格式为用户名/仓库名。用户名和仓库名均由字母、数字、点号(.)、下划线(_)或中划线(-)组成。
  • operations(Iterable[CommitOperation]):CommitOperationAdd和CommitOperationDelete类的列表。
  • commit_message(str): 本次上传的提交信息。
  • commit_description(str, 可选): 对本次提交的描述。
  • token(str, 可选): 对目标仓库具有可写权限的访问令牌,单独使用此方法时则为必选。
  • revision(str, 可选):要上传的指定分支,由字母、数字、下划线(_)或中划线(-)组成,默认为"main"。
  • num_threads(int, 可选):上传所使用的线程数目,默认为5。
  • kwargs:仅为兼容第三方组件,本身并无作用。

使用Git工具上传文件

使用Git命令行

在此不展开介绍如何使用Git工具进行仓库的版本管理,而是着重介绍使用git lfs上传大型文件(仍需小于5G)。

  1. 安装 git lfs(安装只需执行一次即可,无需在每个本地仓库都执行)。

    bash
    git lfs install
    
  2. 在本地Git仓库中追踪大型文件(100MB以上)。根据实际需要,追踪相应文件,可以是某一类型,也可以是具体的文件名。示例如下:

    bash
    git lfs track "*.7z" "*.bin" "*.bz2" "*.ckpt" "*.h5" "*.lfs.*" "*.mlmodel" "*.model"\
     "*.npy" "*.npz" "*.onnx" "*.pb" "*.pickle" "*.pkl" "*.pt" "*.pth" "*.rar" "*.safetensors"\
     "saved_model/**/*" "*.tar.*" "*.tar" "*.tgz" "*.zip" "*tfevents*" "*.gz"
    
    git lfs track "big_file.bin"
    
  3. 推送文件。

    bash
    git add .
    git commit -m 'commit message'
    git push
    

克隆私仓以及推送提交时,命令行会出现如下账号密码验证步骤,点此创建令牌,其中password为访问令牌,若仓库涉及lfs文件,则可能需要多次验证。

shell
Username for 'https://modelers.cn': username
Password for 'https://username@modelers.cn':访问令牌