中文
本页内容

第三方社区对接

openMind Hub Client可对接多个社区,可使用户在不同的社区进行上传和下载等操作。当前对接的社区包括:

  • 魔乐社区:默认对接魔乐社区,所有对外开放接口均支持;
  • 启智社区:支持部分接口,包括创建仓库、模型的上传和下载等。
  • gitcode社区:支持部分接口,仅包括文件的上传和下载,与获取仓库内的文件。
  • gitee AI:仅包括下载相关接口。
  • Hugging Face社区: 支持部分接口,包括文件上传和下载,创建仓库和分支等。

安装

shell
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

常用参数无明显差异。

python
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参数。

python
def om_hub_url(
    repo_id: str,
    filename: str,
    token: Optional[str] = None,
    **kwargs,
) -> str

create_repo

创建项目并在项目下创建模型,常用参数无明显差异。

python
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

常用参数无明显差异。

python
def create_commit(
    repo_id: str,
    operations: List[CommitOperationAdd],
    token: Optional[str] = None,
    **kwargs,
) -> str

create_branch

此为空方法,启智社区无分支概念。

upload_folder

上传到模型无明显差异,上传到数据集需指定repo_type="dataset",上传到数据集的目录会自动压缩成一个压缩包。

python
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”。

python
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

下载项目中某个模型的所有文件时,会在本地路径自动补充模型名的目录。因数据集中一个压缩包就代表一个完整数据集,故不支持使用此方法整仓下载数据集。

python
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

常用参数无明显差异。

python
def build_om_headers(token: str, headers: Optional[dict] = None, **kwargs) -> dict

CommitOperationAdd

path_in_repo参数无意义,传入不生效。

python
@dataclass
class CommitOperationAdd:
    path_in_repo: str
    path_or_fileobj: Union[str, Path, bytes, BinaryIO]

om_raise_for_status

常用参数无明显差异,抛出异常与原生方法不同。

python
def om_raise_for_status(response: requests.Response, **kwargs) -> None

try_to_load_from_cache

若不指定cache_dir,则默认从当前路径寻找下载的文件。

python
def try_to_load_from_cache(
    filename: str,
    cache_dir: Union[str, Path, None] = None,
    **kwargs,
) -> Union[str, None]

指定访问的社区

  • 使用set_platform()方法:

    python
    from openmind_hub import *
    
    set_platform("openi")
    om_hub_download(repo_id="FoundationModel/ChatGLM2-6B", filename="config.json", local_dir=".")
    
  • 使用platform参数:

    python
    from openmind_hub import *
    
    om_hub_download(repo_id="FoundationModel/ChatGLM2-6B", filename="config.json", local_dir=".", platform="openi")
    
  • 使用环境变量:

    python
    import os
    # 环境变量的设置需要在导入openmind_hub之前
    os.environ["platform"] = "openi"
    from openmind_hub import *
    
    om_hub_download(repo_id="FoundationModel/ChatGLM2-6B", filename="config.json", local_dir=".")
    

示例:

python
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个文件。

指定访问的社区

python
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缓存文件夹

指定访问的社区

python
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"参数
python
from openmind_hub import snapshot_download, set_platform
set_platform("huggingface")
token = "xxx"
snapshot_download("owner/repo", token=token)

Hugging Face社区支持从环境变量或本地文件中读取访问令牌,若您使用此方式,应主动防范此行为带来的安全风险。