宇宙究极GCP白嫖指南

前端方案:

尽量使用us-west1 / us-cetrnal1 / us-east1e2-micro规格VM,附加30GB standard persistent disk,不要使用premium网络,选择Standard可以享受免费200GB流量. VM可以用来部署反向代理,TPU自动化抢占等任务,任务尽量和VM是同一区域的。

CDN选择CloudFlare接入,如果选择了Standard网络会先使用200GB免费流量,根据GCP CDN interconnectUS拉费用最低能够到0.05 USD /GB

鉴权/IAM系统选择FireBase Authentication免费接入。

后端方案:

选择Cloud Run作为Serverless提供API服务,Cloud Run免费提供两百万次操作三十六万 GB * s(秒) 内存十八万 vCPU * s(秒)同区域内网通信没有网络费用

API Gateway服务聚合各项Serverless服务,两百万次操作免费同区域内网通信不收网络费用

数据库选择Cloud Firestore NoSQL数据库,1GB存储免费,同区域内网通信不收网络费用

队列系统采用Cloud Tasks,前一百万条请求不收费

TPU集群方案:

看你白嫖能力了,上不封顶,目前最高记录国外科研团队白嫖到了8960TPU v4

TPU + Docker部署JAX-F5-TTS指南

安装gcsfuse

(sudo NEEDRESTART_MODE=a bash || bash) <<'EOF'
apt update && \
apt install -y numactl lsb-release gnupg curl net-tools iproute2 procps lsof git ethtool && \
export GCSFUSE_REPO=gcsfuse-`lsb_release -c -s`
echo "deb https://packages.cloud.google.com/apt $GCSFUSE_REPO main" | tee /etc/apt/sources.list.d/gcsfuse.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
apt update -y && apt -y install gcsfuse
rm -rf /var/lib/apt/lists/*
EOF

挂载

gcsfuse --implicit-dirs --file-cache-max-size-mb=32768 --cache-dir=/tmp 存储桶名称 /tmp/gcsfuse

加载保存的F5镜像

docker load -i /tmp/gcsfuse/f5/f5_image.tar

启动镜像

docker run \
--net=host \
--privileged \
-v /tmp/gcsfuse:/bucket \
f5_image:dev \
python -m src.maxdiffusion.f5_gradio_ui_load_aot /bucket/f5/f5_docker.yml

如何使用GKE无限白嫖TPU Spot

白嫖地区一览:v6e(最先进的推理TPU):asia-northeast-1 us-east1-d v5p(最先进的训练TPU):us-east5-a us-central1-a

创建regional cluster,地区选择asia-northeast1-b或者us-east1-d

默认节点池类型选择TPU、型号选择ct6e-standard-8t,后面的topology确保是空白的,下Spot选项打勾,然后创建

在TPU v4通过vllm运行QwQ 32B的教程

首先克隆源代码

git clone https://github.com/vllm-project/vllm.git

在每个worker上安装依赖

cd vllm && pip install -r requirements/tpu.txt

安装库

sudo apt-get update && sudo NEEDRESTART_MODE=a apt-get install libopenblas-base libopenmpi-dev libomp-dev -y

安装vllm

cd vllm && VLLM_TARGET_DEVICE=”tpu” python setup.py develop

开启ray头节点

ray start –head –port=6379

其他worker连接头节点

ray start –address=’xx.xx.xx.xx:6379′

启动openai兼容api server

python3 -m vllm.entrypoints.openai.api_server –host=0.0.0.0 –port=8000 –tensor-parallel-size=芯片数量(4或8 由于有40个head因此此选项只能说4或8) –model=Qwen/QwQ-32B –trust-remote-code

使用ray的多节点需要开启 –distributed-executor-backend ray

如果100G空间不够使用gcsfuse挂载和开启 –download-dir=/xxx/bucket/

探索最强TTS模型之路

Diffusion TTS如F5-TTS拥有强大的zero-shot能力,能够很好的模仿参考音频的节奏和音色,可控性极强,生成速度快,但是算力要求巨大。

基于Continuous Token的AR TTS模型,如Mell-E ,算力要求在Diffusion和离散AR之间,属于一种折中选择。

基于Discrete Token的AR TTS模型,如VALL-E,训练要求很高,需要大量数据进行训练,推理性能要求最低。

如果我们能够使用一个Diffusion TTS模型,或者一个AR + Diffusion的混合模型作为teacher模型,利用算力合成大量优质的音频。

用一个算力要求较低的NAR或者AR模型作为student模型,学习teacher模型的优秀性能。就能够实现用较低算力合成优质的音频。

尝试用MaxText复现微软Mell-E实验报告

项目地址: https://github.com/flyingblackshark/MaxTTS-Mel.git

实现了Mel输入和采样

难点:

  • 数据集较大,生成的mel占用了大量空间,收费较高。
  • 对结束位置预测较为困难,需要大量训练
  • 难以解决重复生成问题,相对于VQ型TTS来说
  • 相对于VQ型,量化比较困难,如何提高模型速度需要研究

优点:

  • 制作数据集简单,容易输入模型进行训练。
  • 生成质量较高
  • 采样需要的GPU性能较低

Zitadel SSO FastAPI后端实战

项目设置里面勾选 权限(角色)断言 和 验证时检查授权

类型选择User Agent,命名为FastAPI Backend

验证类型选PKCE

回调地址可填写可不填,如果不需要让客户错误访问后端时跳转就不填

将Token类型选择为JWT,勾选权限写入Token

由于我们只是拿前端JWT做校验,所以不符合OIDC标准也无所谓

Fish-Speech-Maxtext使用方法介绍-1

数据集处理介绍

背景:由于我们需要使用Grain 作为我们Dataloader,因此我们需要使用Grain支持的格式,如ArrayRecord / HuggingFace(Paquet) 等二进制格式。

本项目处理方法

使用Grain 从HuggingFace上的 MikhailT/hifi-tts 数据集读取数据,读取其中的audio列和text_normalized列进行处理。

首先用Fish Speech Tokenizer对text_normalized进行转化,将其转化成Tokens。然后经过Grain的Operations处理后形成Batch读入,利用TPUv4通过声码器进行批量提取,将其转化成音频Tokens。

随后利用循环逐个处理,将文本Tokens拼接上已经转为Tokens的前缀和后缀,表示user输入,然后拼接上音频Tokens表示assistant输出。这样就可以方便的输入LLM进行训练