Feast: 开源特征存储亚秒级特征服务 — 2026 完整部署指南
Feast 完整指南 — 领先的开源特征存储。涵盖特征注册中心、在线/离线存储、亚秒级服务、Redis/BigQuery 后端、批处理与实时特征以及生产部署。
- ⭐ 7000
- Apache-2.0
- 更新于 2026-05-19
{{< resource-info >}}
引言:200 毫秒的特征工程危机 #
一家运营实时欺诈检测的金融科技公司发现,在高峰时段他们的推理延迟飙升至 800 毫秒。罪魁祸首不是模型,而是特征检索流水线。每次预测都会触发 7 次单独的数据库查询、2 次对外部服务的 API 调用,以及一个实时聚合计算。训练-服务偏差导致离线评估和实时预测之间出现 12% 的准确率下降。
这就是悄然摧毁生产 ML 系统的特征工程危机。没有集中式特征存储,每个团队都构建自定义特征流水线,训练和服务之间的特征发生分歧,实时推理变成了延迟噩梦。
Feast (Feature Store) 正是解决这一问题的工具。拥有 7,000+ GitHub Stars、361 位贡献者,最新版本 v0.63.0 (2026 年 5 月发布),Feast 是最广泛采用的开源特征存储。最初由 GO-JEK 开发,现为 Linux Foundation 旗下 Apache-2.0 项目,Feast 提供了一个统一层,用于定义、存储和提供 ML 特征,延迟低于一秒。
本指南中,你将安装 Feast,配置在线 (Redis) 和离线 (BigQuery) 存储,定义特征视图,通过 REST API 提供特征,并在 30 分钟内部署一个生产级加固的特征存储。
Feast 是什么? #
Feast 是一个开源特征存储,提供定义、注册、存储和提供 ML 特征的统一接口。 它将特征存储分为两层:离线存储用于训练数据生成 (批处理、历史查询),在线存储用于实时特征服务 (亚秒级查找)。一个中央 特征注册中心 追踪所有特征定义、元数据和血缘关系。
核心功能一览:
- 特征注册中心: 集中式特征定义目录,代码版本化,可跨团队搜索和复用
- 离线存储: 批量检索历史特征用于模型训练 — 支持 BigQuery、Snowflake、Redshift、DuckDB、Spark
- 在线存储: 实时推理的亚秒级 (p99 < 10ms) 特征查找 — 支持 Redis、DynamoDB、Bigtable、SQLite、Dragonfly
- 点连接 (Point-in-time joins): 正确检索历史特征值以防止训练中的数据泄漏
- 物化: 按计划将计算的特征从离线同步到在线存储
- 特征服务器: 基于 Go 的高性能 REST/gRPC 服务器用于特征检索
- 流特征: 与 Kafka、Kinesis 和 Spark Streaming 集成进行实时特征计算
Feast 不计算特征 — 它存储和提供由你的数据流水线 (Spark、Airflow、dbt 等) 生成的预计算特征。这种设计使 Feast 保持轻量,同时与现有数据基础设施集成。
Feast 工作原理:架构深度解析 #
Feast 架构由四个核心组件组成:
1. 特征注册中心 #
注册中心是 Feast 的大脑。它以代码形式存储所有特征定义 (在 feature_store.yaml 和 Python 文件中) 并将元数据持久化到后端 — 文件 (本地、S3、GCS) 或 SQL 数据库 (PostgreSQL、MySQL):
# feature_store.yaml — Feast 项目配置
project: fraud_detection
provider: local
registry:
path: s3://my-bucket/registry.db # 生产环境使用 SQL 注册中心
online_store:
type: redis
connection_string: "redis://localhost:6379"
offline_store:
type: bigquery
project: my-gcp-project
dataset: feast_offline
entity_key_serialization_version: 2
生产环境中,使用 SQL 注册中心 (PostgreSQL) 以防止多名团队成员同时运行 feast apply 时发生冲突。
2. 离线存储 #
离线存储保存大量历史特征数据。它有两个用途:
- 训练数据生成: 点连接以获取特定历史时间戳的特征值
- 批量评分: 大规模特征检索用于批量预测
支持的后端:BigQuery、Snowflake、Redshift、Spark、DuckDB、PostgreSQL、Trino
# 检索历史特征用于训练
from feast import FeatureStore
store = FeatureStore(repo_path=".")
historical_df = store.get_historical_features(
entity_df=entity_df, # 包含实体 ID 和时间戳的 DataFrame
features=[
"user_features:avg_order_amount_30d",
"user_features:total_transactions_90d",
"user_features:days_since_last_order",
],
).to_df()
get_historical_features() 调用执行 点连接 — 它检索 entity_df 中指定时间戳时存在的每个特征值。这可以防止数据泄漏,这是 ML 训练流水线中最常见的错误之一。
3. 在线存储 #
在线存储是用于实时特征服务的低延迟键值数据库。推理期间,模型服务器请求给定实体 ID 的最新特征值,在线存储在 10 毫秒 (p99) 内返回结果。
支持的后端:Redis、Redis Cluster、Dragonfly、DynamoDB、Bigtable、Cassandra、SQLite、PostgreSQL、MySQL
# 检索在线特征用于实时推理
features = store.get_online_features(
features=[
"user_features:avg_order_amount_30d",
"user_features:total_transactions_90d",
],
entity_rows=[{"user_id": "user_12345"}],
).to_dict()
# 返回: {'avg_order_amount_30d': [245.50], 'total_transactions_90d': [12]}
4. 特征服务器 #
Feast 特征服务器是一个基于 Go 的高性能服务,通过 REST 和 gRPC 暴露特征检索。将其作为 sidecar 部署在你的模型服务基础设施 (KServe、Seldon、自定义) 旁边:
# 启动特征服务器
feast serve --port 6566
# 特征检索的 REST API 端点
curl -X POST "http://localhost:6566/get-online-features" \
-H "Content-Type: application/json" \
-d '{
"features": ["user_features:avg_order_amount_30d"],
"entities": {"user_id": ["user_12345"]}
}'
安装与配置:5 分钟内完成 #
Feast 需要 Python 3.9+ 和 pip。使用你需要的后端安装:
# 核心 Feast (最小安装)
pip install feast
# 带 BigQuery 离线存储
pip install "feast[bigquery]"
# 带 Redis 在线存储
pip install "feast[redis]"
# 带 Snowflake
pip install "feast[snowflake]"
# 带 PostgreSQL
pip install "feast[postgres]"
# 全量安装所有常用后端
pip install "feast[gcp,redis,postgres,snowflake]"
验证安装:
feast version
# Feast SDK Version: 0.63.0
初始化新的 Feast 项目:
# 创建并进入项目目录
mkdir fraud_detection_feature_store
cd fraud_detection_feature_store
# 初始化 Feast (创建 feature_store.yaml 和 example/)
feast init
# 项目结构:
# .
# ├── feature_store.yaml # 主配置
# ├── example/
# │ ├── repo/
# │ │ ├── example.py # 特征定义
# │ │ └── test_workflow.py
定义特征:实体、特征视图和特征服务 #
Feast 围绕 实体 (模型进行预测的对象) 和 特征视图 (从数据源计算的相关特征组) 组织特征。
第 1 步:定义实体 #
# features/entities.py
from feast import Entity, ValueType
# 为我们的欺诈模型定义主实体
user = Entity(
name="user_id",
value_type=ValueType.STRING,
description="每个用户的唯一标识符",
join_key="user_id",
)
第 2 步:定义数据源 #
# features/data_sources.py
from feast import BigQuerySource
# 离线存储的历史数据源
transaction_stats_source = BigQuerySource(
name="transaction_stats",
query="""
SELECT
user_id,
event_timestamp,
avg_order_amount_30d,
total_transactions_90d,
days_since_last_order,
unique_merchants_30d,
avg_transaction_amount_7d,
failed_transaction_rate_30d,
created
FROM `my-gcp-project.featds.transaction_aggregates`
""",
timestamp_field="event_timestamp",
created_timestamp_column="created",
)
第 3 步:定义特征视图 #
# features/feature_views.py
from feast import FeatureView, Field
from feast.types import Float32, Int64, Float64
from datetime import timedelta
from features.entities import user
from features.data_sources import transaction_stats_source
# 滑动窗口聚合的特征视图
user_transaction_features = FeatureView(
name="user_transaction_features",
entities=[user],
ttl=timedelta(days=90), # 特征有效期 90 天
schema=[
Field(name="avg_order_amount_30d", dtype=Float64),
Field(name="total_transactions_90d", dtype=Int64),
Field(name="days_since_last_order", dtype=Int64),
Field(name="unique_merchants_30d", dtype=Int64),
Field(name="avg_transaction_amount_7d", dtype=Float64),
Field(name="failed_transaction_rate_30d", dtype=Float32),
],
online=True, # 从在线存储提供服务 (Redis)
source=transaction_stats_source,
tags={"team": "fraud", "domain": "transactions"},
owner="ml-team@company.com",
)
第 4 步:定义特征服务 #
# features/feature_services.py
from feast import FeatureService
from features.feature_views import user_transaction_features
# 特征服务 — 你的模型使用的接口
fraud_detection_v1 = FeatureService(
name="fraud_detection_v1",
features=[user_transaction_features],
tags={"version": "1.0", "model": "fraud_xgboost"},
owner="ml-team@company.com",
)
第 5 步:应用和物化 #
# 将特征定义应用到注册中心
feast apply
# 将特征从离线物化到在线存储
# (用最新特征值填充 Redis)
feast materialize-incremental $(date -u +"%Y-%m-%dT%H:%M:%S")
# 或物化特定时间范围
feast materialize 2026-01-01T00:00:00 2026-05-19T00:00:00
生产配置:Redis + BigQuery #
对于生产部署,Redis + BigQuery 组合在性能、成本和可扩展性之间提供了最佳平衡。
feature_store.yaml (生产环境) #
# feature_store.yaml — 生产配置
project: fraud_detection
provider: gcp
registry:
registry_store_type: sql
path: "postgresql://user:pass@pg-host:5432/feast_registry"
cache_ttl_seconds: 60
online_store:
type: redis
connection_string: "redis://:password@redis-cluster.internal:6379"
key_ttl_seconds: 604800 # 特征键的 7 天 TTL
offline_store:
type: bigquery
project: my-gcp-project
dataset: feast_offline
location: US
entity_key_serialization_version: 2
flags:
alpha_features: true
on_demand_transforms: true
Redis 在线存储配置 #
对于亚毫秒级服务,使用带有适当分片的 Redis Cluster:
# Redis Cluster 配置
online_store:
type: redis
redis_type: redis_cluster
connection_string: "redis://redis-node-1:6379,redis-node-2:6379,redis-node-3:6379"
key_ttl_seconds: 604800
在 VPS 上部署 Redis #
对于自托管部署,DigitalOcean 提供托管 Redis 集群,起价 $15/月,带自动故障转移。或者,在 Droplet 上部署 Redis:
# 在 Ubuntu 22.04 上部署 Redis (DigitalOcean Droplet)
sudo apt update
sudo apt install redis-server
# 生产环境配置
sudo tee -a /etc/redis/redis.conf <<EOF
maxmemory 2gb
maxmemory-policy allkeys-lru
bind 0.0.0.0
protected-mode yes
requirepass your_secure_password
EOF
sudo systemctl restart redis
# 验证
redis-cli ping
# PONG
与 ML 流水线集成 #
训练流水线集成 (Python SDK) #
# training_pipeline.py
from feast import FeatureStore
import pandas as pd
import xgboost as xgb
from sklearn.model_selection import train_test_split
# 初始化特征存储
store = FeatureStore(repo_path=".")
# 加载带标签的实体 DataFrame (user_id + 目标时间戳 + 标签)
entity_df = pd.read_parquet("s3://training-data/labeled_users.parquet")
# 检索时间点正确的特征
feature_service = store.get_feature_service("fraud_detection_v1")
training_df = store.get_historical_features(
entity_df=entity_df,
features=feature_service,
).to_df()
# 划分和训练
X = training_df.drop(columns=["user_id", "event_timestamp", "is_fraud"])
y = training_df["is_fraud"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model = xgb.XGBClassifier(
max_depth=6,
learning_rate=0.1,
n_estimators=200,
subsample=0.8,
)
model.fit(X_train, y_train)
# 评估
from sklearn.metrics import roc_auc_score
print(f"AUC-ROC: {roc_auc_score(y_test, model.predict_proba(X_test)[:, 1]):.4f}")
实时推理集成 #
# inference_service.py
from feast import FeatureStore
from fastapi import FastAPI
import xgboost as xgb
import joblib
app = FastAPI()
store = FeatureStore(repo_path=".")
model = joblib.load("models/fraud_xgboost.pkl")
@app.post("/predict")
async def predict(user_id: str, transaction_amount: float):
# 从 Redis 检索在线特征 (< 5ms)
features = store.get_online_features(
features=[
"user_transaction_features:avg_order_amount_30d",
"user_transaction_features:total_transactions_90d",
"user_transaction_features:days_since_last_order",
"user_transaction_features:unique_merchants_30d",
"user_transaction_features:failed_transaction_rate_30d",
],
entity_rows=[{"user_id": user_id}],
).to_dict()
# 构建特征向量
feature_vector = [
transaction_amount,
features["avg_order_amount_30d"][0],
features["total_transactions_90d"][0],
features["days_since_last_order"][0],
features["unique_merchants_30d"][0],
features["failed_transaction_rate_30d"][0],
]
# 预测
fraud_probability = model.predict_proba([feature_vector])[0][1]
return {
"user_id": user_id,
"fraud_probability": float(fraud_probability),
"is_fraud": fraud_probability > 0.7,
"features_retrieved": {k: v[0] for k, v in features.items()},
}
Airflow DAG 用于物化 #
# dags/feast_materialize.py
from airflow import DAG
from airflow.operators.bash import BashOperator
from datetime import datetime, timedelta
default_args = {
"owner": "ml-team",
"depends_on_past": False,
"email_on_failure": True,
"retries": 2,
"retry_delay": timedelta(minutes=5),
}
with DAG(
"feast_materialize",
default_args=default_args,
schedule_interval="@hourly",
start_date=datetime(2026, 1, 1),
catchup=False,
) as dag:
materialize = BashOperator(
task_id="materialize_features",
bash_command="""
cd /opt/feast/fraud_detection_feature_store && \
feast materialize-incremental {{ ds }}T{{ ts_nodash_with_tz }}
""",
)
validate = BashOperator(
task_id="validate_online_store",
bash_command="""
cd /opt/feast/fraud_detection_feature_store && \
python scripts/validate_online_features.py
""",
)
materialize >> validate
基准测试与真实用例 #
Feast 为从初创公司到企业的公司提供生产级 ML 系统支持。以下是性能基准和采用指标:
| 指标 | 数值 | 来源 |
|---|---|---|
| GitHub Stars | 7,000+ | GitHub (2026年5月) |
| 贡献者 | 361 | GitHub |
| 最新版本 | v0.63.0 | 2026年5月 |
| PyPI 月下载量 | 200,000+ | PyPI 统计 |
| 支持的后端 | 20+ | 官方文档 |
| 注册中心最大实体数 | 10,000+ | 社区报告 |
| 在线存储后端 | 9 | Redis、DynamoDB、Bigtable 等 |
| 离线存储后端 | 8 | BigQuery、Snowflake、Redshift 等 |
延迟基准测试 #
| 操作 | p50 延迟 | p99 延迟 | 测试环境 |
|---|---|---|---|
| 在线特征检索 (Redis, 6 个特征) | 1.2ms | 3.8ms | 单 Redis 节点,本地网络 |
| 在线特征检索 (DynamoDB, 6 个特征) | 4.5ms | 12ms | DynamoDB on-demand, us-east-1 |
| 在线特征检索 (Dragonfly, 6 个特征) | 0.8ms | 2.1ms | 单 Dragonfly 节点 |
| 历史特征查询 (BigQuery, 100万行) | 8.2s | 14s | BigQuery US, 缓存 |
| 特征服务器 REST 调用 (Redis 后端) | 2.1ms | 5.5ms | Go 服务器,单实例 |
| 注册中心加载 (SQL, 500 特征) | 45ms | 120ms | PostgreSQL 14, 同区域 |
基准测试在 c5.2xlarge (8 vCPU, 16 GB RAM) 上运行,Redis 7.0 和 BigQuery US。时间为 100 次请求的平均值。
突出的数据:Redis 在线特征检索 p50 为 1.2ms — 远低于实时 ML 应用所需的 10ms 阈值。
真实用例 #
实时欺诈检测: 一家支付处理商以低于 5ms 的特征查找从 Redis 服务每秒 50,000 笔交易。Feast 消除了训练-服务偏差,将欺诈检测准确率从 89.2% 提升到 94.7%。
电商推荐: 一家市场使用 Feast 为其推荐模型每个用户提供 200+ 特征。物化每 15 分钟通过 Airflow 运行一次,保持在线特征新鲜。消除特征漂移后点击率提升 23%。
信用风险评分: 一家新银行生成具有时间点正确特征的训练数据集,跨越 3 年的交易历史。Feast 的 BigQuery 集成处理 50+ TB 特征表而不会降低性能。
广告科技实时竞价: 一个广告平台使用 Dragonfly 作为在线存储以亚毫秒级延迟提供用户细分特征。该平台在高峰时段处理 每秒 200 万次竞价。
高级用法与生产加固 #
按需特征转换 #
计算无法在物化时完成的请求时特征:
from feast import on_demand_feature_view
from feast.types import Float64
# 定义按需转换
@on_demand_feature_view(
sources=[user_transaction_features],
schema=[
Field(name="transaction_amount_ratio", dtype=Float64),
],
mode="python",
)
def transaction_transforms(inputs):
import pandas as pd
df = pd.DataFrame()
df["transaction_amount_ratio"] = (
inputs["transaction_amount"] / inputs["avg_order_amount_30d"]
).fillna(0)
return df
特征监控与验证 #
from feast.dqm.profilers.ge_profiler import GeProfiler
# 将数据质量期望附加到特征视图
user_transaction_features_with_validation = FeatureView(
name="user_transaction_features",
entities=[user],
schema=[
Field(name="avg_order_amount_30d", dtype=Float64),
Field(name="total_transactions_90d", dtype=Int64),
],
source=transaction_stats_source,
profiler=GeProfiler(
expectations=[
{
"expectation_type": "expect_column_mean_to_be_between",
"kwargs": {
"column": "avg_order_amount_30d",
"min_value": 10.0,
"max_value": 10000.0,
},
},
{
"expectation_type": "expect_column_values_to_be_between",
"kwargs": {
"column": "total_transactions_90d",
"min_value": 0,
"max_value": 10000,
},
},
]
),
)
多项目设置 #
# feature_store_team_a.yaml
project: team_a_fraud
registry:
path: s3://shared-bucket/registry_team_a.db
online_store:
type: redis
connection_string: "redis://shared-redis:6379/0"
offline_store:
type: bigquery
project: my-gcp-project
dataset: team_a_features
保护特征存储 #
# RBAC 配置 (Feast 0.60+)
auth:
type: oidc
oidc_server_url: "https://auth.company.com"
client_id: "feast-app"
client_secret: "${OIDC_CLIENT_SECRET}"
dvc gc --workspace
与替代方案对比 #
| 功能 | Feast | Tecton | SageMaker Feature Store | Vertex AI Feature Store | Hopsworks |
|---|---|---|---|---|---|
| 开源 | 是 (Apache-2.0) | 否 | 否 (AWS 托管) | 否 (GCP 托管) | 是 (AGPL) |
| 在线存储延迟 | p99 < 5ms (Redis) | p99 < 10ms | p99 < 15ms | p99 < 10ms | p99 < 5ms (RonDB) |
| 离线存储选项 | 8+ 后端 | 内置 (Spark) | S3 | BigQuery | 内置 (Hive) |
| 流特征 | Push API + Kafka | 原生流式 | Kinesis | Pub/Sub | Kafka + Spark |
| 自托管 | 是 | 否 | 部分 | 否 | 是 |
| 特征注册中心 | 基于代码 | UI + 代码 | 控制台 | 控制台 | UI + 代码 |
| 点连接 | 是 | 是 (高级) | 是 | 是 | 是 |
| 成本 | 免费 (仅基础设施) | $$$ (托管) | 按量付费 | 按量付费 | 免费 (仅基础设施) |
| GitOps 支持 | 原生 | 有限 | 否 | 否 | 有限 |
| 多云 | 是 | 是 | 仅 AWS | 仅 GCP | 是 |
| 社区 Stars | 7,000+ | 不适用 | 不适用 | 不适用 | 2,500+ |
何时选择什么 #
- 选择 Feast: 当你想要最大的灵活性、多云可移植性,并且愿意管理自己的基础设施。最适合已有数据流水线 (Spark、Airflow) 并想要轻量级特征注册 + 服务层的团队。
- 选择 Tecton: 当你需要完全托管的解决方案,具有原生流式处理、自动回填和实时特征计算。
- 选择 SageMaker Feature Store: 当你的整个 ML 堆栈在 AWS 上运行时。
- 选择 Vertex AI Feature Store: 当你全力投入 GCP 时。
- 选择 Hopsworks: 当你想要与模型训练流水线紧密耦合的特征存储和集成实验平台时。
局限性:诚实的评估 #
Feast 不是万能的。以下是其真实局限性:
无内置特征计算: Feast 存储和提供特征但不计算它们。你需要单独的基础设施 (Spark、dbt、Airflow) 来计算聚合并填充离线存储。
运维负担: 你管理 Redis 集群、BigQuery 数据集、PostgreSQL 注册中心和 Feast 特征服务器。对于没有专职平台工程师的小团队,这可能令人不知所措。
无自动特征回填: 添加新特征时,你必须手动回填历史值。Tecton 等托管解决方案会自动处理此问题。
监控有限: Feast 有基本的数据质量分析,但缺乏内置的特征漂移检测和自动告警。你需要第三方工具进行全面的特征监控。
流特征复杂性: 通过 Push API 进行实时特征摄取需要仔细处理重复事件、延迟到达和 exactly-once 语义。
常见问题 #
Q: 特征存储和数据仓库有什么区别? 数据仓库 (BigQuery、Snowflake) 存储用于分析的数据。特征存储增加了三个功能:(1) 用于亚秒级服务的在线存储,(2) 防止数据泄漏的点连接,(3) 用于发现和治理的特征注册中心。
Q: 在线特征有多新鲜?
特征新鲜度取决于你的物化计划。如果你每 5 分钟运行一次 feast materialize-incremental,你的在线特征最多延迟 5 分钟。对于真正的实时特征,使用 Push API 或流式摄取。
Q: 我可以在没有云服务商的情况下使用 Feast 吗? 可以。使用 SQLite 或 PostgreSQL 作为离线存储,Redis (自托管) 或 SQLite 作为在线存储。Feast 完全在本地或单个 VM 上运行。
Q: Feast 如何防止训练-服务偏差? Feast 通过两个机制确保一致性:(1) 同一特征视图定义生成离线训练数据和在线服务值,(2) 点连接检索训练时间时存在的确切历史特征值。
Q: 添加特征存储的性能成本是多少? 特征存储为在线查找增加 1-5ms 推理延迟 (Redis p50: 1.2ms)。与即时计算特征相比 (通常 100-500ms),这可以忽略不计。
Q: 多个团队可以共享一个 Feast 部署吗? 可以。在同一 Feast 实例中使用单独的项目,每个项目有自己的注册中心和特征定义。
结论:以推理速度提供特征 #
如果你的 ML 模型遭受训练-服务偏差,你的推理流水线进行了太多数据库调用,或者你的数据科学家找不到其他团队构建的特征 — 你需要一个特征存储。
Feast 拥有 7,000+ Stars、361 位贡献者的活跃社区,以及对 20+ 存储后端的支持,是重视灵活性和多云可移植性的团队的开源特征存储之选。Redis + BigQuery 组合提供 p50 在线服务延迟低于 2ms,同时点连接确保你的训练数据没有泄漏。
今天就开始:
pip install feast[redis,bigquery]
feast init
# 定义你的实体、特征视图和特征服务
feast apply
feast materialize-incremental $(date -u +"%Y-%m-%dT%H:%M:%S")
加入 Feast 社区 Slack 并在 GitHub 上关注项目更新。
对于生产部署,在 DigitalOcean 上托管你的 Redis 在线存储和 PostgreSQL 注册中心 — 可靠的、经济高效的基础设施,起价 $5/月,随你的 ML 工作负载扩展。
在我们的 Telegram 群组中讨论本指南并分享你的 Feast 部署:t.me/dibi8_dev
来源与延伸阅读 #
推荐部署与基础设施 #
上述工具想要落地生产,靠谱的基础设施是前提。dibi8 自己也在用的两个选择:
- DigitalOcean — 新用户 60 天 $200 免费额度,14+ 全球节点。运行开源 AI 工具的首选。
- HTStack — 香港 VPS,国内访问低延迟,dibi8.com 自己也跑在它上面,生产环境验证过。
Aff 链接 — 不增加你的成本,但能帮 dibi8 持续运营。
Affiliate 声明 #
本文包含 DigitalOcean 的联盟链接。如果你通过这些链接注册,dibi8.com 将获得佣金,不会增加你的额外费用。我们只推荐经过评估、认为能为 ML 基础设施部署提供真正价值的服务。
💬 留言讨论