阿里云函数低成本搭建AIGC
高效免运维;弹性高可用;高性能低成本。使云函数很适合弹性应用。
资费
配置 8 核 32G,GPU 16G,按分钟计费计费公式(单价 * 配置) * 时间
- GPU 单价 0.00011元/GB*秒 分钟价格 (0.00011 * 16)*60= 0.1056 元
- vCPU 单价 0.000127元/vCPU*秒 分钟价格 (0.000127 * 8)*60= 0.06096元
- 内存 单价 0.0000127元/GB*秒 分钟价格 (0.0000127 * 32)*60= 0.024384元
- 磁盘 单价 0.00000175元/GB*秒 分钟价格 (0.00000175 * 10)*60= 0.00105元
- 调用次数 单价 0.009元/万次 按100万次,价格 0.9 元
- 公网出流量 单价 0.50元/GB 按10G,价格 5 块
GPU比较贵。这里我们要好钢用到刀刃上,只在出图使用GPU。
参考 https://help.aliyun.com/zh/fc/product-overview/billing-overview
模型存储 NAS
- 这里我们按20G存储预估,这不是NAS的限制,是本人钱包的限制
容量型:0.35元/GB/月 0.35 * 20 = 7元
性能型: 1.85元/GB/月 1.85 * 20 = 37元
如何低成本,减少 GPU
浪费,使用容量NAS
当然能白嫖就更好了。这里我们选择白嫖
https://help.aliyun.com/zh/fc/product-overview/notice-of-package-quota-change
新客户试用套餐
首次开通函数计算服务,可0元享免费试用额度,有效期3个月,总价值180元。免费试用额度限购一次,内含四个试用包,包括100万GB*秒GPU使用量、50万vCPU*秒vCPU使用量、200万GB*秒内存使用量、800万次函数调用。
— 老客户专享套餐
为答谢老用户(2023年04月06日20:00之前开通函数计算的用户)对函数计算产品的关爱,所有老用户可9.9元享老客户专享套餐,有效期3个月,总价值180元。专享套餐限购一次,内含四个试用包,包括100万GB*秒GPU使用量、50万vCPU*秒vCPU使用量、200万GB*秒内存使用量、800万次函数调用。
搭建应用
- 1、登录阿里云官网,搜索云函数
- 2、应用——> 创建应用 ——> 通过模板——>人工智能——> AI数字绘画stable-diffusion自定义模型版
如果懒,我们可以直接点击模板
https://fcnext.console.aliyun.com/applications/create?template=fc-stable-diffusion-plus
注意事项
- 使用代码库进行管理
例如云效: https://codeup.aliyun.com/
- 没授权的授权,授权之后点下一步。
成本优化
找到我们的应用
应用名称——> 环境名称——>环境详情:云端开发:流水线管理——>云端开发——>激活云端开发
找到 s.yaml
这里就是我们的配置文件
1、配置无 GPU 的 sdwebui
- 1、复制出来一个 display 函数
stable-diffusion-display:
component: fc
actions:
post-deploy:
- component: fc ondemand put --qualifier LATEST --max 1
props:
region: ${vars.region}
service: ${vars.service}
function:
name: ${vars.functionName}_display
handler: index.handler
timeout: 600
diskSize: 512
caPort: 7860
# instanceType: fc.gpu.tesla.1
runtime: custom-container
cpu: 8
customContainerConfig:
args: ''
accelerationType: Default
image: ${vars.imageUrl}
accelerationInfo:
status: Preparing
command: ''
webServerMode: true
instanceConcurrency: 100
memorySize: 32768
# gpuMemorySize: 16384
asyncConfiguration: {}
environmentVariables:
EXTRA_ARGS: ${vars.extraArgs}
triggers:
- name: defaultTrigger
description: ''
type: http
qualifier: LATEST
config:
methods:
- GET
- POST
- PUT
- DELETE
authType: anonymous
disableURLInternet: false
customDomains:
- domainName: auto
protocol: HTTP
routeConfigs:
- path: /*
- 2、修改
filemgr
函数
filemgr:
component: fc
actions:
post-deploy:
- component: fc ondemand put --qualifier LATEST --max 1
props:
region: ${vars.region}
service: ${vars.service}
function:
name: "admin"
description: 'FC 文件管理器'
codeUri: './code/filemgr'
runtime: custom
timeout: 7200
memorySize: 3072
cpu: 2.0
diskSize: 512
instanceConcurrency: 16
caPort: 9000
customRuntimeConfig:
command:
- ./server
environmentVariables:
TOKEN: ${vars.filemgrToken}
SD_VERSION: ""
SD_FUNCTION_NAME: ${stable-diffusion-display.props.function.name}
SD_DOMAIN: ${stable-diffusion-display.output.url.custom_domain[0].domain}
layers:
- "acs:fc:${vars.region}:official:layers/ServerlessDevs/versions/1"
triggers:
- name: httpTrigger
type: http
config:
authType: anonymous
methods:
- GET
- POST
- PUT
- DELETE
- HEAD
- OPTIONS
customDomains:
- domainName: auto
protocol: HTTP
routeConfigs:
- path: /*
- 3、按旧有流程进行配置和调试
- 4、使用 display 函数进行出图
2、使用 容量型 NAS
- 1、创建一个新的容量型 NAS
- 2、复制性能型 NAS的标签、到容量型NAS。
- 3、重新部署
3、创建文件管理器 Cloudreve
1、首先创建文件夹
mkdir code/cloudreve && cd code/cloudreve
2、创建启动脚本
touch scf_bootstrap && chmod +x scf_bootstrap
cat > scf_bootstrap<<EOF
#!/usr/bin/env bash
# export LD_LIBRARY_PATH=/opt/go/usr/lib:${LD_LIBRARY_PATH}
# 判断文件夹是否存在,不存在创建
if [ ! -d "/mnt/auto/cloudreve/" ];then
# 如果不存在在根目录下的output下新建canbus文件夹
mkdir -p /mnt/auto/cloudreve/
else
echo "/mnt/auto/cloudreve/已经存在"
fi
# 启动应用
./cloudreve -c /code/conf.ini
EOF
3、下载二进制文件,并创建配置文件
- 下载二进制文件
wget 'https://github.com/cloudreve/Cloudreve/releases/download/3.8.2/cloudreve_3.8.2_linux_amd64.tar.gz' \
-U "Mozilla/5.0 Chrome/70.0.3538.110 Safari/537.36" \
-O "cloudreve_3.8.2_linux_amd64.tar.gz"
#解压获取到的主程序
tar -zxvf cloudreve_3.8.2_linux_amd64.tar.gz
# 删除压缩文件
rm -rf cloudreve_3.8.2_linux_amd64.tar.gz
如果下载不下来使用这个链接:
wget 'https://ghproxy.com/https://github.com/cloudreve/Cloudreve/releases/download/3.8.2/cloudreve_3.8.2_linux_amd64.tar.gz' \
-U "Mozilla/5.0 Chrome/70.0.3538.110 Safari/537.36" \
-O "cloudreve_3.8.2_linux_amd64.tar.gz"
- 创建配置文件
cat > conf.ini<<EOF
[System]
; 监听端口
Listen = :9000
[Database]
; SQLite 数据库文件路径
DBFile = /mnt/auto/cloudreve/cloudreve.db
EOF
4、修改 s.yaml 文件,创建函数
fc-cloudreve: # 服务名称
component: fc # 组件名称
props: # 组件的属性值
region: ${vars.region} # 关于变量的使用方法,可以参考:https://www.serverless-devs.com/serverless-devs/yaml#变量赋值
service: ${vars.service}
function:
name: cloudreve # 函数名
description: 这是一个 Cloudreve 案例
cAPort: 9000
timeout: 30
memorySize: 128
cpu: 0.1
diskSize: 512
instanceConcurrency: 12
runtime: custom.debian10
codeUri: ./code/cloudreve
handler: index.handler
customRuntimeConfig:
command:
- ./scf_bootstrap
triggers:
- name: httpTrigger
type: http
config:
authType: anonymous
methods:
- GET
- POST
customDomains:
- domainName: auto
protocol: HTTP
routeConfigs:
- path: /*
默认账户密码
账号: admin@cloudreve.org
密码: admin
初始状态没有文件,我们可以在个人设置导入文件夹来导入。访问路径 admin/file
常见问题
可以在 阿里函数计算钉钉群提问