开发者工具(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。
参数说明
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"
参数说明
ep: string类型;AMP服务地址,例如"https://amp.sensecoreapi.cn"
调用示例
from scoamp.globals import set_endpoint
set_endpoint("https://amp.sensecoreapi.cn")
获取模型文件列表
参数说明
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_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)
模型(快照)下载
参数说明
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模型但未上传过文件
参数说明
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')