资讯动态

Feast 特征仓库初始化实战:使用 feast init 创建本地、Snowflake、GCP 与 AWS 特征仓库

发布时间:2026/9/17 20:11:30 来源:尧图企业网站定制
Feast 特征仓库初始化实战使用 feast init 创建本地、Snowflake、GCP 与 AWS 特征仓库【免费下载链接】feastThe Open Source Feature Store for AI/ML项目地址: https://gitcode.com/GitHub_Trending/fe/feast本文面向 Feast 用户与 ML 平台工程师完整讲解特征仓库feature repository的创建流程从feast init命令的交互式引导到本地、Snowflake、GCP、AWS 四种模板的生成结构与后续开发动作。读完本文你将掌握特征仓库的目录规范、feature_store.yaml配置语义、模板背后的源码实现机制并能独立完成仓库的初始化、注册feast apply与版本化管理。特征仓库是什么特征仓库是包含特征存储配置与单个特征定义的目录配置以代码Python/YAML的形式编写。官方强烈建议团队使用 git 集中跟踪该目录将特征定义视为与业务代码同等重要的版本化资产。Feast CLI 正是以特征仓库为输入完成特征存储的配置、部署与管理。关于特征仓库的详细概念可参考 Feature repository。从实现上看一个完整的特征仓库由三类内容构成一个或多个包含特征声明的 Python 文件位于仓库根目录的feature_store.yaml基础设施配置可选的.feastignore声明feast apply时需要忽略的路径。Feast 在feast apply时会递归读取仓库内所有 Python 文件包括子目录因此若需在仓库内存放命令式脚本建议通过.feastignore将其排除避免被当作特征定义解析。使用 feast init 创建特征仓库创建特征仓库最快捷的方式是执行feast init命令。该命令会向当前目录写入一个包含特征定义、示例数据与本地开发配置文件的模板仓库。在 CLI 实现 中init命令定义如下参数参数简写默认值说明PROJECT_DIRECTORY-自动生成如tiny_pika项目目录名--template/-t-tlocal模板类型可取值local、gcp、aws、snowflake、spark、postgres、hbase、cassandra、hazelcast、couchbase、milvus、ray、ray_rag、rag、pytorch_nlp等--minimal/-m-m关闭创建空项目仓库等价于强制使用minimal模板--repo-path-在当前目录下创建同名子目录指定仓库创建的目标目录若未提供项目目录名Feast 会通过generate_project_name()自动生成一个随机且有意义的名字如文档示例中的tiny_pika项目名必须为字母数字、下划线与连字符且不能以下划线或连字符开头否则init_repo会抛出参数错误见 repo_operations.py。Local 模板feast init Creating a new Feast repository in /.../tiny_pika.这是默认模板无需任何云环境凭证即可完成本地开发与测试。Snowflake 模板feast init -t snowflake Snowflake Deployment URL: ... Snowflake User Name: ... Snowflake Password: ... Snowflake Role Name: ... Snowflake Warehouse Name: ... Snowflake Database Name: ... Creating a new Feast repository in /.../tiny_pika.Snowflake 模板会在初始化时通过交互式提示收集部署 URL、用户名、密码、角色、仓库与数据库信息随后由 bootstrap.py 将这些值写入feature_store.yaml密码输入使用hide_inputTrue隐藏回显。GCP 模板feast init -t gcp Creating a new Feast repository in /.../tiny_pika.GCP 模板基于 provider 自动推导默认的离线/在线存储初始化过程不强制要求交互输入。AWS 模板feast init -t aws AWS Region (e.g. us-west-2): ... Redshift Cluster ID: ... Redshift Database Name: ... Redshift User Name: ... Redshift S3 Staging Location (s3://*): ... Redshift IAM Role for S3 (arn:aws:iam::*:role/*): ... Should I upload example data to Redshift (overwriting feast_driver_hourly_stats table)? (Y/n): Creating a new Feast repository in /.../tiny_pika.AWS 模板除收集 Redshift 连接与 S3 暂存信息外还会询问是否将示例数据上传至 Redshift覆盖feast_driver_hourly_stats表。若确认bootstrap.py 会通过 AWS SDK 自动创建 Redshift Data API 客户端与 S3 资源执行建表、上传 Parquet 等操作——这正是feast init -t aws生成的仓库能够开箱即用的原因。init 命令生成的目录结构feast init完成后会在当前目录生成一个以项目名命名的子目录$ tree . └── tiny_pika ├── data │ └── driver_stats.parquet ├── example.py └── feature_store.yaml 1 directory, 3 files各文件职责如下data/driver_stats.parquet示例特征数据用于本地开发与测试example.py部分模板为driver_repo.py或feature_definitions.py特征定义文件声明 Entity、FeatureView 等feature_store.yaml特征仓库的基础设施配置。进入生成的目录# Replace tiny_pika with your auto-generated dir name cd tiny_pika从源码看init_repo见 repo_operations.py的完整流程为校验项目名 → 在目标路径创建目录 → 从sdk/python/feast/templates/template复制模板文件将gitignore重命名为.gitignore→ 若模板含bootstrap.py则执行其bootstrap()函数以交互式收集云环境参数并回填配置 → 将feature_store.yaml中的project: my_project替换为实际项目名 → 清理__pycache__后输出创建成功提示。若目标目录已存在feature_store.yaml命令会检测到冲突并退出避免覆盖已有仓库。feature_store.yaml 配置详解feature_store.yaml是特征仓库的核心配置文件必须位于仓库根目录。下面分别介绍四种模板的配置内容及其语义。Local 模板本地模板对应 templates/local/feature_repo/feature_store.yaml将 registry 与在线存储均落在本地文件project: my_project registry: data/registry.db provider: local online_store: path: data/online_store.dbproject特征项目的名称feast init时会被替换为实际目录名registry元数据注册表路径本地开发时使用 SQLite 文件provider指定默认的离线/在线存储实现online_store在线存储配置本地场景使用文件型 SQLite。Snowflake 模板Snowflake 模板对应 templates/snowflake/feature_repo/feature_store.yaml为离线存储、批处理引擎与在线存储分别声明了 Snowflake 连接信息初始化时交互输入的值会回填到各占位符如SNOWFLAKE_DEPLOYMENT_URLproject: my_project registry: registry.db provider: local offline_store: type: snowflake.offline account: SNOWFLAKE_DEPLOYMENT_URL user: SNOWFLAKE_USER password: SNOWFLAKE_PASSWORD role: SNOWFLAKE_ROLE warehouse: SNOWFLAKE_WAREHOUSE database: SNOWFLAKE_DATABASE batch_engine: type: snowflake.engine account: SNOWFLAKE_DEPLOYMENT_URL user: SNOWFLAKE_USER password: SNOWFLAKE_PASSWORD role: SNOWFLAKE_ROLE warehouse: SNOWFLAKE_WAREHOUSE database: SNOWFLAKE_DATABASE online_store: type: snowflake.online account: SNOWFLAKE_DEPLOYMENT_URL user: SNOWFLAKE_USER password: SNOWFLAKE_PASSWORD role: SNOWFLAKE_ROLE warehouse: SNOWFLAKE_WAREHOUSE database: SNOWFLAKE_DATABASE entity_key_serialization_version: 3注意entity_key_serialization_version: 3该字段控制实体键的序列化格式新项目建议保持版本 3以保证跨版本兼容。GCP 模板GCP 模板对应 templates/gcp/feature_repo/feature_store.yaml将 provider 设为gcp并默认使用 SQLite 在线存储便于本地起步project: my_project # By default, the registry is a file (but can be turned into a more scalable SQL-backed registry) # On GCP, minimally you should create a GCS bucket for a remote file registry registry: data/registry.db provider: gcp # Note: if you comment the online store out, then this by default will use Datastore as the online store online_store: type: sqlite path: data/online_store.db entity_key_serialization_version: 3模板中以注释形式保留了可选配置注释掉online_store后默认使用Datastore也提供了 Bigtable、Redis 等在线存储的备选示例。生产部署时建议将 registry 放置到 GCS 桶或改用 SQL 类 registry。AWS 模板AWS 模板对应 templates/aws/feature_repo/feature_store.yaml将 provider 设为aws并默认配置 Redshift 离线存储project: my_project registry: data/registry.db provider: aws online_store: type: sqlite path: data/online_store.db offline_store: type: redshift cluster_id: %REDSHIFT_CLUSTER_ID% region: %AWS_REGION% database: %REDSHIFT_DATABASE% user: %REDSHIFT_USER% s3_staging_location: %REDSHIFT_S3_STAGING_LOCATION% iam_role: %REDSHIFT_IAM_ROLE% entity_key_serialization_version: 3模板中的%AWS_REGION%、%REDSHIFT_*%占位符会在bootstrap()执行时被替换为用户输入值注释掉的 DynamoDB、Redis 在线存储配置同样保留备用。生产场景下注释掉 SQLite 在线存储后默认使用 DynamoDB 作为在线存储。模板生成的特征定义以 Snowflake 为例以 Snowflake 模板生成的 driver_repo.py 为例可以完整看到特征定义文件的组成要素Entity定义实体driver对应 join keydriver_id可将其理解为获取特征所需的主键DataSource通过SnowflakeSource指向特征所在的 Snowflake 表并声明timestamp_field用于 point-in-time join 与 TTL 判定与created_timestamp_column用于去重FeatureView按存储方式对特征分组声明名称、关联实体、TTL、schema 字段列表、数据源与标签。示例中ttl被设为 52 周 × 10 年仅作演示实际生产应按业务时效性设置RequestSource 与 on-demand feature view定义仅在请求时可用如 HTTP 请求携带的输入特征并声明基于已有特征与请求特征的实时变换逻辑如conv_rate_plus_val1FeatureService将多个特征/特征子集组织为一个模型版本如driver_activity_v1与driver_activity_v2PushSource 与freshFeatureView通过推送源支持将最新特征直接写入在线存储满足实时特征场景。这份模板本身就是一份极佳的特征定义入门教材覆盖了 Feast 特征定义的主要对象。更多定义语法参见 Feature View。创建后的下一步apply 与版本控制完成初始化并进入仓库目录后即可开始开发。官方建议依次尝试运行feast apply将example.py或对应模板的特征定义文件中的定义注册到 Feast 注册表编辑特征定义文件中的内容后再次运行feast apply观察定义的增量变更在同一目录初始化 git 仓库将特征仓库纳入版本控制便于团队协作与审计。feast apply会递归读取仓库内所有 Python 文件并解析其中的特征定义因此应利用.feastignore排除不需要解析的脚本例如venv、scripts/foo.py等规则写法可参考 .feastignore。关于feature_store.yaml的更多参数说明见 feature-store.yaml关于特征的注册与推断机制见 Registration inferencing。小结feast init是进入 Feast 世界的第一步通过一个命令即可得到包含配置、特征定义与示例数据的完整仓库骨架。本地模板适合快速上手Snowflake、GCP、AWS 模板则通过bootstrap.py交互收集云环境信息并回填配置实现初始化即就绪。理解init背后复制模板 → 执行 bootstrap → 回填 project 名的源码流程将帮助你在面对自定义离线/在线存储或团队协作场景时更从容地管理特征仓库。【免费下载链接】feastThe Open Source Feature Store for AI/ML项目地址: https://gitcode.com/GitHub_Trending/fe/feast创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价