AI

特徴量ストア比較:Feast vs Hopsworks vs Featureform でMLの特徴量を管理する

オープンソースラボ編集部2026年6月14日

特徴量ストア比較:Feast vs Hopsworks vs Featureform でMLの特徴量を管理する

🏪 機械学習の再利用性と一貫性を高める「特徴量ストア」。Feast・Hopsworks・Featureformを比較して最適なMLOpsインフラを構築しましょう。

特徴量ストアとは

機械学習モデルの学習・推論に使う特徴量(features)を一元管理・共有するプラットフォームです。トレーニングとサービング間の特徴量の一貫性(training-serving skew の防止)が主な目的です。

主要ツール比較表

項目FeastHopsworksFeatureform
ライセンスApache 2.0AGPL v3(CE)Apache 2.0
開発言語PythonJava/PythonGo/Python
オフライン/オンライン両対応両対応両対応
変換ロジック限定的◎ Spark/Flink
データソースBigQuery/Redshift/S3等多数多数
Kubernetes対応
Managed SaaS×Hopsworks Cloud
UIダッシュボード

各ツールの特徴

Feast

Gojekが開発しOSS化した特徴量ストアの先駆け。シンプルな設計でオフライン(学習)とオンライン(推論)の特徴量の一貫性を保証します。

主な特徴:

  • Python SDKで特徴量の定義・管理
  • BigQuery/Redshift/S3をオフラインストアとして利用
  • Redis/DynamoDBをオンラインストアとして利用
  • point-in-time correct な学習データ生成
from feast import FeatureStore, FeatureView, Field, Entity
from feast.types import Float64, Int64
from feast.infra.offline_stores.bigquery_source import BigQuerySource

# 特徴量ソースの定義
driver_stats_source = BigQuerySource(
    table="myproject.feast_demo.driver_stats",
    timestamp_field="event_timestamp",
)

# エンティティの定義
driver = Entity(name="driver", join_keys=["driver_id"])

# 特徴量ビューの定義
driver_stats_fv = FeatureView(
    name="driver_hourly_stats",
    entities=[driver],
    ttl=timedelta(hours=1),
    schema=[
        Field(name="conv_rate", dtype=Float64),
        Field(name="acc_rate", dtype=Float64),
    ],
    source=driver_stats_source,
)

# 推論時の特徴量取得
store = FeatureStore(repo_path=".")
features = store.get_online_features(
    features=["driver_hourly_stats:conv_rate"],
    entity_rows=[{"driver_id": 1234}],
).to_dict()

向いているケース: シンプルな特徴量ストア・GCP/AWS環境

Hopsworks

特徴量ストアに加え、モデルレジストリ・MLパイプライン管理を統合した本格的なMLプラットフォーム。

主な特徴:

  • SparkとFlinkでのリアルタイム特徴量変換
  • HSFS(Hopsworks Feature Store Python API)
  • モデルレジストリ統合でモデルと特徴量のバージョン管理を連携
  • Great Expectationsによるデータ品質チェック統合
import hopsworks

# Hopsworks接続
project = hopsworks.login(
    host="c.app.hopsworks.ai",
    project="my_ml_project"
)

fs = project.get_feature_store()

# 特徴量グループの作成
fg = fs.get_or_create_feature_group(
    name="customer_features",
    version=1,
    description="Customer transaction features",
    primary_key=["customer_id"],
    online_enabled=True,
)

# データを挿入
fg.insert(customer_df)

# 学習データの取得
fv = fs.get_feature_view(name="customer_churn_fv", version=1)
X_train, X_test, y_train, y_test = fv.train_test_split(test_size=0.2)

向いているケース: 本格的なMLOpsプラットフォーム

Featureform

「仮想特徴量ストア」というコンセプトで、既存のデータインフラ(Redis/Postgres/BigQuery等)をそのまま使いながら特徴量レイヤーを追加します。

主な特徴:

  • 既存インフラをそのまま活用(データ移動不要)
  • Pythonデコレーターで特徴量変換を定義
  • Feature lineage(特徴量の系譜)追跡
  • 複数チームでの特徴量共有ポータル
import featureform as ff

client = ff.Client(host="localhost:7878")

# Redisをオンラインストアとして登録
redis = ff.register_redis(
    name="redis",
    host="localhost",
    port=6379,
)

# BigQueryをオフラインストアとして登録
bq = ff.register_bigquery(
    name="bigquery",
    project_id="my-project",
    dataset_id="my_dataset",
)

# 特徴量変換の定義
@client.df_transformation(inputs=[("transactions", "default")])
def average_user_transaction(df):
    return df.groupby("user_id")["amount"].mean()

向いているケース: 既存インフラ活用・特徴量共有ポータル

選択ガイド

状況推奨
シンプルな特徴量ストア・GCP/AWSFeast
統合MLプラットフォームが必要Hopsworks
既存DBを活用・特徴量共有Featureform

内部リンク

外部リソース

FAQ

Q. 特徴量ストアは小規模チームでも必要ですか?

モデルが1〜2本であれば不要な場合が多いです。モデルが増え、特徴量の再利用・共有ニーズが出てきたら導入を検討してください。

Q. training-serving skewとは何ですか?

学習時と推論時に異なる特徴量計算ロジックが使われることで生じる誤差のことです。特徴量ストアはこれを防ぐために同一ロジックを保証します。

Q. Tectonとの違いは何ですか?

TectonはFeastをベースにした商用SaaSです。Feastと比べて運用サポートと追加機能がありますが、有料です。

Q. リアルタイム特徴量(ストリーミング)はどのツールが得意ですか?

HopsworksのFlink統合が最も充実しています。FeastもKafkaソースをサポートしますが、設定はより手動です。

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。