开发者工具(scoamp) | 大装置帮助中心
跳到主要内容

开发者工具(scoamp)

scoamp 是 AMP 的客户端工具集,包含一套命令行工具 (CLI) 和 python 开发库 (Library)。

安装

环境要求

  • 操作系统:win10、centos 7.6、ubuntu18.04、macOS 10.9以上
  • python 3.7以上
  • git及git-lfs

安装指令

$ pip install scoamp

验证

$ scoamp version

输出 0.1.0类似信息则安装成功

CLI 工具

开发者可以通过CLI工具 scoamp从本地终端进行模型访问以及大文件上传配置。

命令集合

命令功能
scoamp version版本查看
scoamp lfs配置大文件上传支持
scoamp login本地登录
scoamp list查看、搜索模型
scoamp get下载模型
scoamp create上传模型

更多命令细节可通过 scoamp --help查看,每个子命令也可通过 --help来查询详细用法,即 scoamp <cmd> --help

命令:version

输出客户端当前版本

命令:lfs

git lfs 扩展,用于支持大文件(如10 GB)上传

默认的git lfs对单一文件使用单次http请求上传,对过大的文件不太友好,单次传输内容过大,传输耗时较长,且很容易被各种因素中断。我们提供了自定义的分块传输扩展实现,来解决这个问题。

$ scoamp lfs setup <REPO_PATH>

<REPO_PATH>必须为有效的AMP模型目录(通过git clone创建),否则会报错。

📣 Tips:本命令是只对单一模型(git repo)生效的,执行命令时需指定目标目录。若多个repo要支持,则需多次执行。

示例

$ cd /my/amp-model/path
$ scoamp lfs setup .
Successfully set up scoamp lfs custom transfer for large files!

命令:login

用于本地配置AK (Access Key)和SK (Secret Key),便于后续命令访问远端服务器。

不同于前述生成密钥中提到的git密钥,这里的AK/SK是通过以下方式获取的。

打开大装置控制台,点击用户,选择AccessKey访问密钥,如下图所示

获取用户密钥

进入AccessKey的管理界面,创建访问密钥获取用户密钥

下载创建完成的访问密钥获取用户密钥

拿到AK/SK文件后,在终端进行如下操作

$ scoamp login

输入对应信息,出现 Login Succeed!则登录成功。

非交互式登录

通过 scoamp login --access-key <your ak> --secret-key <your sk> 来实现。

命令:list

查看开发者自己有权限的模型信息。

$ socamp list [OPTIONS]

返的模型记录按更新时间倒序排列,即第一个为最近更新的。

可选项

  • --num / -n:指定最多返回的记录数,不可超过200。-1表示返回全部,默认为-1。
  • --search / -s:指定模型名称模糊搜索关键词。
  • --simple:按json格式输出结果,便于程序分析。默认是以表格方式呈现,便于直观查看。

示例

$ scoamp list -n 2 -s bloom

Model Information(2/2)
┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Name ┃ ID ┃ URL ┃ Owner ┃ Tags ┃ Created ┃ Updated ┃
┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ bloomy │ bloomy │ http://amp │ yg1111 │ │ 2023-04-13T │ 2023-04-13 │
│ │ │ -git.sense │ │ │ 12:11:36.51 │ T12:11:36. │
│ │ │ coreapi.de │ │ │ 1273Z │ 511307Z │
│ │ │ v/yg1111/b │ │ │ │ │
│ │ │ loomy.git │ │ │ │ │
├────────┼────────┼────────────┼────────┼──────┼─────────────┼────────────┤
│ bloomx │ bloomx │ http://amp │ yg1111 │ │ 2023-04-13T │ 2023-04-13 │
│ │ │ -git.sense │ │ │ 12:10:39.15 │ T12:10:39. │
│ │ │ coreapi.de │ │ │ 4070Z │ 154095Z │
│ │ │ v/yg1111/b │ │ │ │ │
│ │ │ loomx.git │ │ │ │ │
└────────┴────────┴────────────┴────────┴──────┴─────────────┴────────────┘

命令:get

下载模型

$ socamp get [OPTIONS] MODEL_ID

必要项

MODEL_ID: 模型名

model id与模型的uuid和display name不同

可选项

  • --local-dir / -d:模型保存到的本地目录, 如不指定,则在当前目录下创建一个模型名的目录
  • --is-public / -pub: 是否为公开模型,不指定则为用户模型
  • --revision / -rev: 指定模型git库的branch/tag/commit id作为当次下载的snapshot,默认为master
  • --force / -f: 若本地目录已存在同名文件,是否仍从服务端下载覆盖
  • --ignore-patterns / -igp: 按匹配规则忽略一些文件下载
  • --parallels / -j: 下载并发度,默认为4线程
  • --access-key / -ak: 用户access key,用于服务端认证,如果已提前 scoamp login登录,则可忽略
  • --secret-key / -sk: 用户secret key,用于服务端认证,如果已提前 scoamp login登录,则可忽略
  • --endpoint / -ep: 调试选项,用于指定服务端环境,可取值为standard(正式)/tech(测试)/dev(开发),默认为大装置正式环境,即standard
  • --verbose / -v: 打印详细信息,包括中间调试日志
  • --help: 打印帮助信息

示例

1.简单下载用户模型

$ scoamp get my-model

2.下载公开模型

$ scoamp get internlm-7b -pub

3.指定用户模型版本

$ scoamp get my-model -rev a3dce7db

命令:create

创建用户模型,并上传模型文件(仅限初始化)

$ socamp create [OPTIONS] MODEL_ID

必要项

MODEL_ID: 模型名

--local-dir / -d:本地模型目录

--model-space / -ms: 模型空间ID,需要AMP web端查询,格式如a320a4e0-b4a3-4846-8117-ee81925ab272

可选项

  • --access-key / -ak: 用户access key,用于服务端认证,如果已提前 scoamp login登录,则可忽略
  • --secret-key / -sk: 用户secret key,用于服务端认证,如果已提前 scoamp login登录,则可忽略
  • --endpoint / -ep: 调试选项,用于指定服务端环境,可取值为standard(正式)/tech(测试)/dev(开发),默认为大装置正式环境,即standard
  • --help: 打印帮助信息

示例

$ scoamp create my-model -d ./local_model -ms a320a4e0-b4a3-4846-8117-ee81925ab272

Python SDK

配置认证信息

如果本地已使用CLI工具登录 (scoamp login) 过,则无需再调用该方法。可以使用该方法来强制代替本地缓存的AK/SK。

set_auth_info
(access_key: str, secret_key: str)

参数说明

access_key: string类型;用户AK

secret_key: string类型;用户SK

调用示例

from scoamp.globals import set_auth_info

set_auth_info("YOUR ACCESS KEY", "YOUR SECRET KEY")

配置AMP服务地址

本接口仅用于开发测试,平台用户不建议调用,默认内置地址为"https://amp.sensecoreapi.cn"

set_endpoint
(ep: str)

参数说明

ep: string类型;AMP服务地址,例如"https://amp.sensecoreapi.cn"

调用示例

from scoamp.globals import set_endpoint

set_endpoint("https://amp.sensecoreapi.cn")

获取模型文件列表

model_file_list
(model_id: str, is_public: bool = False, revision: Optional[str] = None, ) -> list

参数说明

model_id: string类型;模型名(ID)

is_public: bool类型,可选,默认为Fase;是否为公开模型

revision: string类型,可选;git commit id/branch/tag,默认返回master分支结果

调用示例

from scoamp.toolkit import model_file_list

model_files = model_file_list("pythia-12b-deduped", is_public=True)

模型单文件下载

model_file_download
(model_id: str, file_path: str, is_public: bool = False, revision: Optional[str] = None, local_dir: Optional[str] = None, force_download: bool = False, resume_download: bool = True,) -> str

参数说明

model_id: string类型;模型名(ID)

file_path: string类型;模型文件名(带目录前缀)

is_public: bool类型,可选,默认为Fase;是否为公开模型

revision: string类型,可选;git commit id/branch/tag,默认返回master分支结果

local_dir: string类型,可选;文件本地存放目录,默认为当前目录

force_download: bool类型,可选,默认为False;当本地已存在同名文件时,是否强制覆盖,默认False时会报异常

resume_download: bool类型,可选,默认为True;是否使用断点续传机制下载

调用示例

from scoamp.toolkit import model_file_download

file_path = model_file_download("pythia-12b-deduped", "pytorch_model-00001-of-00003.bin", is_public=True)

模型(快照)下载

snapshot_download
(model_id: str, local_dir: str, is_public: bool = False, revision: Optional[str] = None, local_dir: Optional[str] = None, force_download: bool = False, resume_download: bool = True, ignore_patterns: Optional[Union[List[str], str]] = None,) -> str

参数说明

model_id: string类型;模型名(ID)

local_dir: string类型;模型文件本地存放目录

is_public: bool类型,可选,默认为Fase;是否为公开模型

revision: string类型,可选;git commit id/branch/tag,默认返回master分支结果

force_download: bool类型,可选,默认为False;当本地已存在同名文件时,是否强制覆盖,默认False时会报异常

resume_download: bool类型,可选,默认为True;是否使用断点续传机制下载

ignore_patterns: string或string数组类型,可选;忽略模型中符合特定pattern的文件,不下载,如".gitkeep"、"README"

调用示例

from scoamp.toolkit import snapshot_download

model_dir = snapshot_download("pythia-12b-deduped", "./my-pythia-12b-deduped", is_public=True, revision="master")

模型上传

目前只支持初始化上传,即创建AMP模型并立即上传,或已创建AMP模型但未上传过文件

create_and_upload_model
(model_id: str, local_dir: str, model_space_name: str, allow_exist: bool = False, ) -> str

参数说明

model_id: string类型;模型名(ID)

local_dir: string类型;模型文件本地存放目录

model_space_name: string类型;AMP模型空间标识,可通过“SenseCore控制台 - AMP子产品 - 模型空间管理” 页面“ID列”获取

allow_exist: bool类型,可选,默认为False;是否允许模型已创建(注意,即时该选项为True,若模型仓库下存在已上传的文件,则本次调用仍会失败)

调用示例

from scoamp.toolkit import create_and_upload_model

model_dir =create_and_upload_model("your-model-id", "local/model/directory", 'fcbbdfa8-c48e-10bb-a440-3b3736204f4e')