compute-nest-best-practice/opensource/stablediffusion/oos/ECS-BulkyDownloadFileForStableDiffusion.yaml (160 lines of code) (raw):
FormatVersion: OOS-2019-06-01
Description:
en: Download stable diffusion model file to ECS instance
zh-cn: 下载StableDiffusion模型或预览图到ECS实例
name-en: ACS-ECS-BulkyDownloadFileForStableDiffusion
name-zh-cn: 下载StableDiffusion模型或预览图
categories:
- instance_manage
- application_manage
- computenest
Parameters:
regionId:
Type: String
Label:
en: RegionId
zh-cn: 地域ID
AssociationProperty: RegionId
Default: '{{ ACS::RegionId }}'
targets:
Type: Json
Label:
en: TargetInstance
zh-cn: 目标实例
AssociationProperty: Targets
AssociationPropertyMetadata:
ResourceType: ALIYUN::ECS::Instance
RegionId: regionId
sourceType:
Type: String
Label:
en: SourceType
zh-cn: 下载方式(本地上传文件不能超过5GB)
AllowedValues:
- https
- local
- oss
Default: https
AssociationPropertyMetadata:
LocaleKey: DownloadFileType
RegionId: ${regionId}
sourcePath:
Type: String
Label:
en: SourcePath
zh-cn: 文件来源(https方式填写链接地址)
AssociationProperty: ALIYUN::OOS::File::FileUrl
AssociationPropertyMetadata:
FileType: ${sourceType}
RegionId: ${regionId}
modelType:
Type: String
Label:
en: ModelType
zh-cn: 模型类型
AllowedValues:
- CHECKPOINT
- LORA
- VAE
- OTHER
Default: CHECKPOINT
modelFileDir:
Type: String
Label:
en: ModelFileDir
zh-cn: 模型或预览图存储目录
AssociationPropertyMetadata:
Value:
- Condition:
Fn::Equals:
- ${modelType}
- CHECKPOINT
Value: /home/models/Stable-diffusion/
- Condition:
Fn::Equals:
- ${modelType}
- LORA
Value: /home/models/Lora/
- Condition:
Fn::Equals:
- ${modelType}
- VAE
Value: /home/models/VAE/
- Condition:
Fn::Equals:
- ${modelType}
- OTHER
Value: /home/models/
modelFileType:
Type: String
Label:
en: ModelFileType
zh-cn: 选择模型或预览图
AllowedValues:
- Model
- PreviewImage
Default: Model
modelFileName:
Type: String
Label:
en: ModelFileName
zh-cn: 自定义模型或预览图名称
Description:
en: <font color='red'><b>Example:model.safetensors、model.png,Please note that the file extension needs to be included, otherwise the uploaded model may be invalid,The preview image name and the model name should remain consistent</b>
zh-cn: <font color='red'><b>例如:model.safetensors、model.png, 注意需要填写文件后缀,否则上传的模型可能无效,预览图名称和模型名称需保持一致</b>
RamRole: ''
Tasks:
- Name: getInstance
Description:
en: Views the ECS instances
zh-cn: 获取ECS实例
Action: ACS::SelectTargets
Properties:
ResourceType: ALIYUN::ECS::Instance
RegionId: '{{ regionId }}'
Filters:
- '{{ targets }}'
Outputs:
instanceIds:
Type: List
ValueSelector: Instances.Instance[].InstanceId
- Name: downloadLinuxFile
Action: ACS::ECS::RunCommand
Description:
en: Runs download file command on linux instance
zh-cn: 在linux类型实例上执行下载文件命令
Properties:
instanceId: '{{ ACS::TaskLoopItem }}'
regionId: '{{ regionId }}'
commandType: RunShellScript
timeout: 3600
commandContent: |-
#/bin/bash
if [ {{sourceType}} = 'oss' ]; then
acs-plugin-manager --exec -P oosutil --params download_content,{{sourceType}},'"{{sourcePath}}"',\'''\','{{modelFileDir}}/{{modelFileName}}','-F'
else
test -e {{modelFileDir}} || mkdir -p {{modelFileDir}}
wget "{{sourcePath}}" -O {{modelFileDir}}/{{modelFileName}} --no-check-certificate
if [ "$?" != 0 ]; then
echo $_
exit 1
fi
echo "{{modelFileDir}}/{{modelFileName}} Execute Success"
fi
Loop:
Items: '{{ getInstance.instanceIds }}'
RateControl:
Mode: Concurrency
MaxErrors: 0
Concurrency: 1
Outputs:
commandOutputs:
AggregateType: Fn::ListJoin
AggregateField: commandOutput
Outputs:
commandOutput:
Type: String
ValueSelector: invocationOutput
Outputs:
commandOutput:
Type: String
Value: '{{ downloadLinuxFile.commandOutputs }}'
Metadata:
ALIYUN::OOS::Interface:
ParameterGroups:
- Parameters:
- regionId
- targets
Label:
default:
zh-cn: 选择实例
en: Select Instances
- Parameters:
- modelFileType
- modelType
- sourceType
- sourcePath
- modelFileDir
- modelFileName
Label:
default:
zh-cn: 配置参数
en: Configure Parameters