第三方社区对接
openMind Hub Client可对接多个社区,可使用户在不同的社区进行上传和下载等操作。当前对接的社区包括:
- 魔乐社区:默认对接魔乐社区,所有对外开放接口均支持;
- 启智社区:支持部分接口,包括创建仓库、模型的上传和下载等。
- gitcode社区:支持部分接口,仅包括文件的上传和下载,与获取仓库内的文件。
- gitee AI:仅包括下载相关接口。
- Hugging Face社区: 支持部分接口,包括文件上传和下载,创建仓库和分支等。
安装
pip install openmind_hub[openi]
详见《安装指导》。
启智社区
适配的接口及差异
首先,此社区与默认社区的最大差异为:启智社区存在“项目”的概念,一个项目可表示为user/project,模型与数据集都在项目下,所有使用repo_id参数都请注意下述差异。上传与下载数据集时均需添加repo_type参数。
模型:repo_id="user/project"指向该项目下名为“project”的模型仓库,repo_id="user/project/model"指向该项目下名为“model”的模型仓库。
数据集:数据集为项目下的一个个压缩包。repo_id="user/project", filename="test.zip"指向该项目下指定名称的数据集。
http_get
常用参数无明显差异。
def http_get(
url: str,
temp_file: BinaryIO,
resume_size: float = 0,
headers: Optional[Dict[str, str]] = None,
displayed_filename: Optional[str] = None,
**kwargs,
) -> None
om_hub_url
获取下载私仓文件的链接时,需要添加token参数。
def om_hub_url(
repo_id: str,
filename: str,
token: Optional[str] = None,
**kwargs,
) -> str
create_repo
创建项目并在项目下创建模型,常用参数无明显差异。
def create_repo(
repo_id: str,
token: Optional[str] = None,
private: bool = False,
exist_ok: bool = False,
desc: Optional[str] = None,
license: Optional[str] = None,
**kwargs,
) -> str
create_commit
常用参数无明显差异。
def create_commit(
repo_id: str,
operations: List[CommitOperationAdd],
token: Optional[str] = None,
**kwargs,
) -> str
create_branch
此为空方法,启智社区无分支概念。
upload_folder
上传到模型无明显差异,上传到数据集需指定repo_type="dataset",上传到数据集的目录会自动压缩成一个压缩包。
def upload_folder(
repo_id: str,
folder_path: Union[str, Path],
token: Optional[str] = None,
repo_type: Literal["dataset", "model"] = "model",
**kwargs,
) -> Optional[str]
om_hub_download
若不指定local_dir参数,则默认将文件下载到当前目录下,且重复下载会创建带数字后缀的文件。下载数据集需指定repo_type="dataset",且需指定cluster="gpu"或cluster="npu",默认为“npu”。
def om_hub_download(
repo_id: str,
filename: str,
token: Optional[str] = None,
local_dir: Optional[Union[str, Path]] = None,
force_download: Optional[bool] = False,
repo_type: Literal["dataset", "model"] = "model",
**kwargs,
) -> Optional[Path]
snapshot_download
下载项目中某个模型的所有文件时,会在本地路径自动补充模型名的目录。因数据集中一个压缩包就代表一个完整数据集,故不支持使用此方法整仓下载数据集。
def snapshot_download(
repo_id: str,
token: Optional[str] = None,
local_dir: Optional[Union[str, Path]] = None,
force_download: Optional[bool] = False,
**kwargs,
) -> Optional[Path]
build_om_headers
常用参数无明显差异。
def build_om_headers(token: str, headers: Optional[dict] = None, **kwargs) -> dict
CommitOperationAdd
path_in_repo参数无意义,传入不生效。
@dataclass
class CommitOperationAdd:
path_in_repo: str
path_or_fileobj: Union[str, Path, bytes, BinaryIO]
om_raise_for_status
常用参数无明显差异,抛出异常与原生方法不同。
def om_raise_for_status(response: requests.Response, **kwargs) -> None
try_to_load_from_cache
若不指定cache_dir,则默认从当前路径寻找下载的文件。
def try_to_load_from_cache(
filename: str,
cache_dir: Union[str, Path, None] = None,
**kwargs,
) -> Union[str, None]
指定访问的社区
使用
set_platform()方法:pythonfrom openmind_hub import * set_platform("openi") om_hub_download(repo_id="FoundationModel/ChatGLM2-6B", filename="config.json", local_dir=".")使用
platform参数:pythonfrom openmind_hub import * om_hub_download(repo_id="FoundationModel/ChatGLM2-6B", filename="config.json", local_dir=".", platform="openi")使用环境变量:
pythonimport os # 环境变量的设置需要在导入openmind_hub之前 os.environ["platform"] = "openi" from openmind_hub import * om_hub_download(repo_id="FoundationModel/ChatGLM2-6B", filename="config.json", local_dir=".")
示例:
from openmind_hub import set_platform, create_repo, upload_folder, snapshot_download
token = "token_in_openi"
# 下载魔乐社区的PyTorch-NPU/t5_small模型到./t5_small目录下
snapshot_download(repo_id="PyTorch-NPU/t5_small", local_dir="./t5_small")
# 下载指定社区的FoundationModel/ChatGLM2-6B模型到./ChatGLM2-6B目录下
snapshot_download(repo_id="FoundationModel/ChatGLM2-6B", local_dir="./ChatGLM2-6B", platform="openi")
# 设置默认社区
set_platform("openi")
# 在指定社区创建owner/cool-model项目及cool-model模型(注意替换实际用户名及仓库名)
create_repo(repo_id="owner/cool-model", token=token)
# 上传文件到owner/cool-model项目的cool-model模型中
upload_folder(repo_id="owner/cool-model", folder_path="./t5_small", token=token)
gitcode社区
适配的接口及差异
gitcode社区适配以下方法,其参数和行为与原方法基本一致:
- upload_file
- upload_folder
- create_commit
- om_hub_download:
revision参数只支持分支名,下载公有仓库的文件需要访问令牌。 - snapshot_download:
revision参数只支持分支名,下载公有仓库的文件需要访问令牌。 - list_repo_tree:每层最多列出100个文件。
指定访问的社区
import os
os.environ["OPENMIND_HUB_ENDPOINT"] = "https://api.gitcode.com"
from openmind_hub import snapshot_download
token = "xxx"
snapshot_download("owner/repo", token=token)
gitee AI社区
适配的接口及差异
gitee AI社区适配下载相关接口。其中"revision"参数因不同社区默认分支存在差异,使用默认分支时需要指定其值为“master”;不需要添加repo_type参数。
- om_hub_download
- snapshot_download:较魔乐社区中,下载目录下额外生成.cache缓存文件夹
指定访问的社区
import os
os.environ["HF_ENDPOINT"] = "https://hf-api.gitee.com"
from openmind_hub import snapshot_download, set_platform
set_platform("gitee")
token = "xxx"
snapshot_download("owner/repo", token=token, revision="master")
gitee AI社区支持从环境变量或本地文件中读取访问令牌,若您使用此方式,应主动防范此行为带来的安全风险。
Hugging Face社区
适配的接口及差异
支持在Hugging Face社区上传下载文件,创建仓库与分支。用法无明显差异。
- upload_file
- upload_folder
- om_hub_download
- snapshot_download: 较魔乐社区中,下载目录下额外生成.cache缓存文件夹
- create_branch
- create_repo:不支持"fullname"、"desc"、"license"参数
from openmind_hub import snapshot_download, set_platform
set_platform("huggingface")
token = "xxx"
snapshot_download("owner/repo", token=token)
Hugging Face社区支持从环境变量或本地文件中读取访问令牌,若您使用此方式,应主动防范此行为带来的安全风险。