SlideShare a Scribd company logo
1 of 37
Download to read offline
Vespa機能紹介
2018/03/13
Yahoo! JAPAN MEETUP # 22(Vespa 特別編)
ヤフー株式会社 矢野 友貴
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
• 氏名
• 矢野 友貴 (やの ゆうき)
• 所属
• ヤフー株式会社 D&S統括本部
• サイエンス的ななにか
• 業務
• むかーしVespaのサービス運用してた
• 検索モデリングとかチョットデキル
• 最近はSolrに浮気中
自己紹介
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
1
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
• Vespaの日本語向けのチュートリアル資料を以下に公開してます
• 詳しい使い方はそちらを参照してください
• この発表ではVespaの特徴的な機能をSolr/Elasticsearchと比較しながら
紹介していきます (赤字と青字で区別)
はじめに
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
2
https://yahoojapan.github.io/vespa-tutorial/
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
3
• 構成
• スキーマ・更新
• 検索・集約
• ランキング
• クラスタリング
• まとめ
アジェンダ
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
4
• 構成
• スキーマ・更新
• 検索・集約
• ランキング
• クラスタリング
• まとめ
アジェンダ
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
5
• Vespaはrpmパッケージ or Dockerイメージとして提供
• 他と同じように全ノードに同じものをインストールすればよい
• Solrだけ別途ZooKeeperが必要 (bundle版もあるけど非推奨)
インストール方法
Vespa Solr Elasticsearch
提供方法 rpm, docker tgz, docker tgz, rpm, deb,
msi, docker
必要な
パッケージ
vespa solr
zookeeper
elasticsearch
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
6
• Solr/Elasticsearchは全ノードで同じプロセスが起動
• インデックスに差があるだけで各プロセスの役割は同じ
ノードとプロセス
Solrクラスタ Elasticsearchクラスタ
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Vespaクラスタ Vespaクラスタ
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
7
• Vespaでは各ノードに対して設定で役割を割り当て
• 大きく分けて admin, container, content の3つのグループ
• 設定に応じて起動するプロセスが変化
ノードとプロセス (cont’d)
config
admin
container
content
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
8
Vespaの構成
admin
Admin
Server
Config
Server
container
Query/Rewrite
Server
Document
Processor
content
Distributor Search Node
インデックス
設定ファイル
プラグイン
モデル
管理者
ユーザ
設定の更新
管理コマンドの実行 クラスタの
状態管理
検索・更新
インデックス管理
検索・ランキング
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
9
• Vespaはコンポーネント毎に実装が大きく違います
• フロントエンド側はJava、バックエンド側はC++
• コード量が非常に多いのもこの辺が起因してそう
• コア実装を拡張するのは至難の業 (Javaプラグインは楽)
Vespaの構成 (cont’d)
グループ コンポーネント 実装 役割
admin
Config Server Java 設定ファイルの管理 (ZooKeeperもどき)
Admin Server Java クラスタの状態管理、ログの収集
container
Query/Rewrite Server Java 検索リクエスト・レスポンスの加工
Document Processor Java 更新ドキュメントの加工
content
Distributor C++ ドキュメント分散のメタ情報管理、分散制御
Search Node C++ インデックス管理、検索・ランキングの実行
※実際はもっと細かいプロセスに分かれます
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
10
• 構成
• スキーマ・更新
• 検索・集約
• ランキング
• クラスタリング
• まとめ
アジェンダ
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
11
• Vespaも基本型はSolr/Elasticsearchとほぼ同じ
• Vespaでは多次元を扱う型が強い
フィールド定義
フィールド型 中身
string 文字列型 (トークナイズの有無は別途指定)
integer 32-bit 整数の数値型
long 64-bit 整数の数値型
byte 8-bit 整数の数値型
float 単精度浮動小数点型
double 倍精度浮動小数点型
raw バイナリ型
array<element-type> 配列型、element-typeで要素の型を指定
weightedset<element-type> 辞書型、element-typeでキーの型を指定、値はinteger
tensor(dimention-1, ...) テンソル型、dimention-1, ...で次元を指定
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
12
• weightedset型とtensor型は多次元データを扱う型
• weightedset : keyとそれに対する重みをmapとして定義
• tensor : 多次元配列 (疎 or 密) としてテンソルを定義
weightedset型とtensor型
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
13
• これら2つの型があると嬉しいこと => ベクトル・行列演算
• ex1) 検索クエリでユーザベクトルを与えてレコメンド
• ex2) ニューラルネットなモデルを用いたランキング
weightedset型とtensor型 (cont’d)
R
users
documents
U V
k
k
users
documents
input hidden output
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
14
• フィールド名や値の型から新規フィールドを動的に作成する機能
• Vespaは動的フィールドは未サポート
• フィールド追加には明示的な定義が必要
• Solr/Elasticsearchではサポート
• データ形式が緩い用途 (ログ解析とか) だとVespaは不向きかも
動的フィールド
Solr (dynamic field) Elasticsearch (dynamic template)
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
15
• 更新した内容が検索可能になるまでの時間はVespaの方が速い
• Vespa : 更新リクエストが完了した時点
• Solr/Elasticsearch : soft commitの間隔に依存
• soft commitの間隔と検索性能がトレードオフの関係
リアルタイム性
tlog…
segments
memory
index
disk
index
tlog
soft commit実行時に
更新差分がvisibleになる
更新リクエストが完了
した時点でvisibleになる
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
16
• 構成
• スキーマ・更新
• 検索・集約
• ランキング
• クラスタリング
アジェンダ
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
17
• よくある検索はVespaも網羅
• Solr/Elasticsearchと大差なし
検索
検索内容 クエリ
defaultフィールドに対して “foo” を検索 query=foo
titleフィールドに対して “foo” を検索 (フィールド指定検索) query=title:foo
“foo” かつ “bar” を含むものを検索 (AND検索) query=foo bar
“foo” もしくは “bar” を含むものを検索 (OR検索) query=(foo bar)
“foo” を含むが “bar” を含まないものを検索 (NOT検索) query=foo -bar
“foo bar” というフレーズを検索 (フレーズ検索) query="foo bar"
1000<=price<=10000 なものを検索 (範囲検索) query=price:[1000;10000]
“foo” に150%の重みを付与して検索 (重み付き検索) query=foo!150 bar
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
18
• 代表的な集約処理 => groupingとfaceting
• grouping
• 各グループの部分検索結果を出力 (検索寄り)
• Vespaの方が強いイメージ
• 後述のランキングと連携できるため
• faceting
• 各グループの統計値を出力 (解析寄り)
• Solr/Elasticsearchの方が強いイメージ
• Stream ExpressionやScriptingなど手広いため
集約
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
19
• Vespaでは集約はDSLを用いて表現
• ex) 各ジャンルから1件ずつドキュメントを取得
Vespaと集約
select=
all(
group(genres)
each(
max(1)
each(
output(summary())
)
)
)
...
“children”: [
{“id”: “grouplist:genres”,
“children”: [
{“id”: group:string:Elasticsearch,
”children”: [ document ]},
{“id”: group:string:Java,
”children”: [ document ]},
{“id”: group:string:Python,
”children”: [ document ]},
...
]
]
...
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
20
• DSLではどのグループになにをするかを再帰的に定義
• ネストしていくことで多段の集約が実行可能
Vespaと集約 (cont’d)
…
Elasticsearch Java Python
…
…
…
select=
all(
group(genres)
each(
max(1)
each(
output(summary())
)
)
)
検索結果全体を
genresでグループ分け
各グループの中から
最大1件を取得
グループ内の各ドキュメント
について内容を出力
後述のランキング
で各グループをソート
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
21
• VespaではSolr/Elasticsearchにない高度な検索機能があります
• WAND検索
• Predicateフィールド
高度な検索
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
22
• WAND = Weak AND or Weighted AND の略
• AND検索とOR検索の中間のような検索
• 10個の検索条件のうち6個を満たす、みたいな
• 実際は各検索条件 (ex. 単語) に重みが付いた内積演算
• スコアの上限値を元に検索候補を枝刈りしながら高速に検索
• ex) レコメンドのような多数の条件で検索するケースとか
WAND検索
インデックス
ユーザベクトル
文書ベクトル
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
23
• フィールド自体に条件式を埋め込む検索
• クエリの属性情報を元に対象文書をフィルタリング
• 各ドキュメントが個別に条件式を持つところがポイント
• ex) 広告配信での対象ユーザ指定とか
Predicateフィールド
gender=male
age=31
docid gender age
1 female 20 <= age < 40
2 male OR female 30 <= age <= 39
3 male 25 <= age < 35
…
文書側に埋め込まれた
条件式を元に絞り込む
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
24
• 構成
• スキーマ・更新
• 検索・集約
• ランキング
• クラスタリング
• まとめ
アジェンダ
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
25
• 一般的にランキングは多段で実施 (ここでは2段を想定)
• 候補文書を段階的に絞り込むことで計算コストを軽減
• 後段ほど複雑なモデルを配置
検索とランキング
second-phase
first-phase
重量モデルによる候補文書の並び替え
軽量モデルによる候補文書の絞り込み
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
26
• Solr/ElasticsearchではLTR pluginの追加が必要
• それぞれのフェーズを異なるコンポーネントが管理
• 設定がバラけて管理が煩雑
検索とランキング (cont’d)
second-phase
first-phase
LTR plugin LTR plugin
Function Query
Similarity
Function Score Query
Similarity
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
27
• Vespaではランキング全体を一つの設定ファイルで管理
• 計算式は専用のDSLを用いて記述
• 検索時に対応するプロファイルを指定することで実行
検索とランキング (cont’d)
second-phase
first-phase
Rank Profile
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
28
• DSLでは四則演算、数学関数、IF文といった記述が可能
• 様々なモデルがDSLを用いて表現できます
DSLによるモデル記述
スコア計算に関連するプロパティの定義
外部モデルファイルの参照
スコア計算式の記述
second-phaseのランキングの定義
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
29
• Vespaではモデル計算で役立つ組み込み素性を多数定義
• フィールド情報のアクセス、クエリとの適合度、etc...
• ただし独自素性を追加するのはちょっと大変かも... (C++実装)
DSLによるモデル記述 (cont’d)
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
30
• Vespaでは前述のtensor型を用いた行列演算を提供
• ニューラルネットや分散表現といった先端的なモデルも表現可能
テンソルを用いたスコア計算
input hidden output
1
…
…
1
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
31
• 構成
• スキーマ・更新
• 検索・集約
• ランキング
• クラスタリング
• まとめ
アジェンダ
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
32
• Solr/Elasticsearchでのインデックス分散 => shard/replica
• 基本的にreplicaを増やすことでスケールアウト
• shardの数は一度決めると変更することが困難
インデックスの分散
node1
node3
node2
node4
node1
node3
node2
node4
replica数に
偏りが生じる
リバランス
ノード
追加
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
33
• Vespaではbucketというより小さい粒度で分散配置を管理
• bucketはデータ規模に応じて動的に統合・分離
• ユーザは冗長数だけを気にすればいい
インデックスの分散 (cont’d)
node1
node3
node2
node4
node1
node3
node2
node4
リバランス
ノード
追加
より均等に
データを分散
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
34
• Vespaでは所属ホストを設定ファイルで管理
• 設定ファイルを修正・デプロイするだけでノードの増減が可能
• 必要なデータ分散なども自動で実行されます
クラスタの管理
Vespaクラスタ
admin
container
content
設定ファイル
プラグイン
モデル
最新設定のアップロードと反映
# vespa-deploy prepare CONFIG
# vespa-deploy activate
新しいcontentノード群
の中でリバランシング
最新の設定の基づき
クラスタ構成を更新
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
35
• 構成
• スキーマ・更新
• 検索・集約
• ランキング
• クラスタリング
• まとめ
アジェンダ
チュートリアル資料
https://yahoojapan.github.io/vespa-tutorial/
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
36
• Vespaのいいところ
• 全文検索に強い (リアルタイム性とか検索機能とか)
• ランキング機能がすごく先進的
• スケーラビリティがとても高い
• Vespaのイマイチなところ
• データ解析用途ならElastic Stackとか使った方が楽
• C++部分の拡張が辛い (Javaの方はフレームワークが優秀)
• OSS化が最近で公式以外にプラグインとか資料がほぼない
まとめ

More Related Content

What's hot

Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Preferred Networks
 
第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案
第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案
第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案Yahoo!デベロッパーネットワーク
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門demuyan
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門masayoshi takahashi
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)Yoshitaka Kawashima
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニングyoku0825
 
[DL輪読会](Sequential) Variational Autoencoders for Collaborative Filtering
[DL輪読会](Sequential) Variational Autoencoders for Collaborative Filtering[DL輪読会](Sequential) Variational Autoencoders for Collaborative Filtering
[DL輪読会](Sequential) Variational Autoencoders for Collaborative FilteringDeep Learning JP
 
情報アクセス技術のためのテストコレクション作成
情報アクセス技術のためのテストコレクション作成情報アクセス技術のためのテストコレクション作成
情報アクセス技術のためのテストコレクション作成kt.mako
 
失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験樽八 仲川
 
AHC-Lab M1勉強会 論文の読み方・書き方
AHC-Lab M1勉強会 論文の読み方・書き方AHC-Lab M1勉強会 論文の読み方・書き方
AHC-Lab M1勉強会 論文の読み方・書き方Shinagawa Seitaro
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
Quine・難解プログラミングについて
Quine・難解プログラミングについてQuine・難解プログラミングについて
Quine・難解プログラミングについてmametter
 
DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜Jun Okumura
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugItsuki Kuroda
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」ManaMurakami1
 
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?Takayuki Shimizukawa
 
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと土岐 孝平
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveTokoroten Nakayama
 

What's hot (20)

Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
 
第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案
第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案
第17回Lucene/Solr勉強会 #SolrJP – Apache Lucene Solrによる形態素解析の課題とN-bestの提案
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
 
SIGMOD 2019 参加報告
SIGMOD 2019 参加報告SIGMOD 2019 参加報告
SIGMOD 2019 参加報告
 
[DL輪読会](Sequential) Variational Autoencoders for Collaborative Filtering
[DL輪読会](Sequential) Variational Autoencoders for Collaborative Filtering[DL輪読会](Sequential) Variational Autoencoders for Collaborative Filtering
[DL輪読会](Sequential) Variational Autoencoders for Collaborative Filtering
 
情報アクセス技術のためのテストコレクション作成
情報アクセス技術のためのテストコレクション作成情報アクセス技術のためのテストコレクション作成
情報アクセス技術のためのテストコレクション作成
 
失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験
 
AHC-Lab M1勉強会 論文の読み方・書き方
AHC-Lab M1勉強会 論文の読み方・書き方AHC-Lab M1勉強会 論文の読み方・書き方
AHC-Lab M1勉強会 論文の読み方・書き方
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
Quine・難解プログラミングについて
Quine・難解プログラミングについてQuine・難解プログラミングについて
Quine・難解プログラミングについて
 
DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
 
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
 
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
 
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_cccSpring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
 

Similar to Vespa 機能紹介 #yjmu

genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライターgenuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライターsohta
 
Deep learning Libs @twm
Deep learning Libs @twmDeep learning Libs @twm
Deep learning Libs @twmYuta Kashino
 
PHPでのSWF編集とその応用
PHPでのSWF編集とその応用PHPでのSWF編集とその応用
PHPでのSWF編集とその応用Yo Ya
 
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Laravel_オープンソースカンファレンスhokkaido_JP_2014Laravel_オープンソースカンファレンスhokkaido_JP_2014
Laravel_オープンソースカンファレンスhokkaido_JP_2014Yuuki Takezawa
 
Twitterのフォロワの増減がわたし…、 気になります! (OSC 2012 広島, Hiroshima.rb)
Twitterのフォロワの増減がわたし…、 気になります! (OSC 2012 広島, Hiroshima.rb)Twitterのフォロワの増減がわたし…、 気になります! (OSC 2012 広島, Hiroshima.rb)
Twitterのフォロワの増減がわたし…、 気になります! (OSC 2012 広島, Hiroshima.rb)Yukinori KITADAI
 
おとなのテキストマイニング
おとなのテキストマイニングおとなのテキストマイニング
おとなのテキストマイニングMunenori Sugimura
 
捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)mosa siru
 
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するPHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するkwatch
 
Deep dive into instanceof
Deep dive into instanceofDeep dive into instanceof
Deep dive into instanceofHiroshi Saito
 
20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudyTakahiro Iwase
 
10分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 110110分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 1101Nobuaki Oshiro
 
sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16Yifeng Jiang
 
20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会Takahiro Iwase
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するTakahito Tejima
 

Similar to Vespa 機能紹介 #yjmu (20)

ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライターgenuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
 
osc_tokyo20100226
osc_tokyo20100226osc_tokyo20100226
osc_tokyo20100226
 
Deep learning Libs @twm
Deep learning Libs @twmDeep learning Libs @twm
Deep learning Libs @twm
 
PHPでのSWF編集とその応用
PHPでのSWF編集とその応用PHPでのSWF編集とその応用
PHPでのSWF編集とその応用
 
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Laravel_オープンソースカンファレンスhokkaido_JP_2014Laravel_オープンソースカンファレンスhokkaido_JP_2014
Laravel_オープンソースカンファレンスhokkaido_JP_2014
 
Xtend の紹介
Xtend の紹介Xtend の紹介
Xtend の紹介
 
Twitterのフォロワの増減がわたし…、 気になります! (OSC 2012 広島, Hiroshima.rb)
Twitterのフォロワの増減がわたし…、 気になります! (OSC 2012 広島, Hiroshima.rb)Twitterのフォロワの増減がわたし…、 気になります! (OSC 2012 広島, Hiroshima.rb)
Twitterのフォロワの増減がわたし…、 気になります! (OSC 2012 広島, Hiroshima.rb)
 
おとなのテキストマイニング
おとなのテキストマイニングおとなのテキストマイニング
おとなのテキストマイニング
 
捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)
 
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するPHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較する
 
pi-6. 繰り返し
pi-6. 繰り返しpi-6. 繰り返し
pi-6. 繰り返し
 
Deep dive into instanceof
Deep dive into instanceofDeep dive into instanceof
Deep dive into instanceof
 
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjpElasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
 
20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy
 
Boost Fusion Library
Boost Fusion LibraryBoost Fusion Library
Boost Fusion Library
 
10分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 110110分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 1101
 
sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16
 
20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
 

More from Yahoo!デベロッパーネットワーク

ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかYahoo!デベロッパーネットワーク
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2Yahoo!デベロッパーネットワーク
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcYahoo!デベロッパーネットワーク
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo!デベロッパーネットワーク
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcYahoo!デベロッパーネットワーク
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtcYahoo!デベロッパーネットワーク
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcYahoo!デベロッパーネットワーク
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcYahoo!デベロッパーネットワーク
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcYahoo!デベロッパーネットワーク
 

More from Yahoo!デベロッパーネットワーク (20)

ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
 
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
 
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッションオンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッション
 
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
 
Persistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability FeaturePersistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability Feature
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
 
eコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtceコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtc
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
 
ビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtcビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtc
 
サイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtcサイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
 
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtcYahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
 
「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
 

Recently uploaded

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 

Recently uploaded (9)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 

Vespa 機能紹介 #yjmu

  • 1. Vespa機能紹介 2018/03/13 Yahoo! JAPAN MEETUP # 22(Vespa 特別編) ヤフー株式会社 矢野 友貴
  • 2. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ • 氏名 • 矢野 友貴 (やの ゆうき) • 所属 • ヤフー株式会社 D&S統括本部 • サイエンス的ななにか • 業務 • むかーしVespaのサービス運用してた • 検索モデリングとかチョットデキル • 最近はSolrに浮気中 自己紹介 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 1
  • 3. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ • Vespaの日本語向けのチュートリアル資料を以下に公開してます • 詳しい使い方はそちらを参照してください • この発表ではVespaの特徴的な機能をSolr/Elasticsearchと比較しながら 紹介していきます (赤字と青字で区別) はじめに Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 2 https://yahoojapan.github.io/vespa-tutorial/
  • 4. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 3 • 構成 • スキーマ・更新 • 検索・集約 • ランキング • クラスタリング • まとめ アジェンダ
  • 5. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 4 • 構成 • スキーマ・更新 • 検索・集約 • ランキング • クラスタリング • まとめ アジェンダ
  • 6. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 5 • Vespaはrpmパッケージ or Dockerイメージとして提供 • 他と同じように全ノードに同じものをインストールすればよい • Solrだけ別途ZooKeeperが必要 (bundle版もあるけど非推奨) インストール方法 Vespa Solr Elasticsearch 提供方法 rpm, docker tgz, docker tgz, rpm, deb, msi, docker 必要な パッケージ vespa solr zookeeper elasticsearch
  • 7. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 6 • Solr/Elasticsearchは全ノードで同じプロセスが起動 • インデックスに差があるだけで各プロセスの役割は同じ ノードとプロセス Solrクラスタ Elasticsearchクラスタ
  • 8. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Vespaクラスタ Vespaクラスタ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 7 • Vespaでは各ノードに対して設定で役割を割り当て • 大きく分けて admin, container, content の3つのグループ • 設定に応じて起動するプロセスが変化 ノードとプロセス (cont’d) config admin container content
  • 9. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 8 Vespaの構成 admin Admin Server Config Server container Query/Rewrite Server Document Processor content Distributor Search Node インデックス 設定ファイル プラグイン モデル 管理者 ユーザ 設定の更新 管理コマンドの実行 クラスタの 状態管理 検索・更新 インデックス管理 検索・ランキング
  • 10. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 9 • Vespaはコンポーネント毎に実装が大きく違います • フロントエンド側はJava、バックエンド側はC++ • コード量が非常に多いのもこの辺が起因してそう • コア実装を拡張するのは至難の業 (Javaプラグインは楽) Vespaの構成 (cont’d) グループ コンポーネント 実装 役割 admin Config Server Java 設定ファイルの管理 (ZooKeeperもどき) Admin Server Java クラスタの状態管理、ログの収集 container Query/Rewrite Server Java 検索リクエスト・レスポンスの加工 Document Processor Java 更新ドキュメントの加工 content Distributor C++ ドキュメント分散のメタ情報管理、分散制御 Search Node C++ インデックス管理、検索・ランキングの実行 ※実際はもっと細かいプロセスに分かれます
  • 11. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 10 • 構成 • スキーマ・更新 • 検索・集約 • ランキング • クラスタリング • まとめ アジェンダ
  • 12. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 11 • Vespaも基本型はSolr/Elasticsearchとほぼ同じ • Vespaでは多次元を扱う型が強い フィールド定義 フィールド型 中身 string 文字列型 (トークナイズの有無は別途指定) integer 32-bit 整数の数値型 long 64-bit 整数の数値型 byte 8-bit 整数の数値型 float 単精度浮動小数点型 double 倍精度浮動小数点型 raw バイナリ型 array<element-type> 配列型、element-typeで要素の型を指定 weightedset<element-type> 辞書型、element-typeでキーの型を指定、値はinteger tensor(dimention-1, ...) テンソル型、dimention-1, ...で次元を指定
  • 13. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 12 • weightedset型とtensor型は多次元データを扱う型 • weightedset : keyとそれに対する重みをmapとして定義 • tensor : 多次元配列 (疎 or 密) としてテンソルを定義 weightedset型とtensor型
  • 14. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 13 • これら2つの型があると嬉しいこと => ベクトル・行列演算 • ex1) 検索クエリでユーザベクトルを与えてレコメンド • ex2) ニューラルネットなモデルを用いたランキング weightedset型とtensor型 (cont’d) R users documents U V k k users documents input hidden output
  • 15. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 14 • フィールド名や値の型から新規フィールドを動的に作成する機能 • Vespaは動的フィールドは未サポート • フィールド追加には明示的な定義が必要 • Solr/Elasticsearchではサポート • データ形式が緩い用途 (ログ解析とか) だとVespaは不向きかも 動的フィールド Solr (dynamic field) Elasticsearch (dynamic template)
  • 16. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 15 • 更新した内容が検索可能になるまでの時間はVespaの方が速い • Vespa : 更新リクエストが完了した時点 • Solr/Elasticsearch : soft commitの間隔に依存 • soft commitの間隔と検索性能がトレードオフの関係 リアルタイム性 tlog… segments memory index disk index tlog soft commit実行時に 更新差分がvisibleになる 更新リクエストが完了 した時点でvisibleになる
  • 17. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 16 • 構成 • スキーマ・更新 • 検索・集約 • ランキング • クラスタリング アジェンダ
  • 18. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 17 • よくある検索はVespaも網羅 • Solr/Elasticsearchと大差なし 検索 検索内容 クエリ defaultフィールドに対して “foo” を検索 query=foo titleフィールドに対して “foo” を検索 (フィールド指定検索) query=title:foo “foo” かつ “bar” を含むものを検索 (AND検索) query=foo bar “foo” もしくは “bar” を含むものを検索 (OR検索) query=(foo bar) “foo” を含むが “bar” を含まないものを検索 (NOT検索) query=foo -bar “foo bar” というフレーズを検索 (フレーズ検索) query="foo bar" 1000<=price<=10000 なものを検索 (範囲検索) query=price:[1000;10000] “foo” に150%の重みを付与して検索 (重み付き検索) query=foo!150 bar
  • 19. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 18 • 代表的な集約処理 => groupingとfaceting • grouping • 各グループの部分検索結果を出力 (検索寄り) • Vespaの方が強いイメージ • 後述のランキングと連携できるため • faceting • 各グループの統計値を出力 (解析寄り) • Solr/Elasticsearchの方が強いイメージ • Stream ExpressionやScriptingなど手広いため 集約
  • 20. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 19 • Vespaでは集約はDSLを用いて表現 • ex) 各ジャンルから1件ずつドキュメントを取得 Vespaと集約 select= all( group(genres) each( max(1) each( output(summary()) ) ) ) ... “children”: [ {“id”: “grouplist:genres”, “children”: [ {“id”: group:string:Elasticsearch, ”children”: [ document ]}, {“id”: group:string:Java, ”children”: [ document ]}, {“id”: group:string:Python, ”children”: [ document ]}, ... ] ] ...
  • 21. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 20 • DSLではどのグループになにをするかを再帰的に定義 • ネストしていくことで多段の集約が実行可能 Vespaと集約 (cont’d) … Elasticsearch Java Python … … … select= all( group(genres) each( max(1) each( output(summary()) ) ) ) 検索結果全体を genresでグループ分け 各グループの中から 最大1件を取得 グループ内の各ドキュメント について内容を出力 後述のランキング で各グループをソート
  • 22. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 21 • VespaではSolr/Elasticsearchにない高度な検索機能があります • WAND検索 • Predicateフィールド 高度な検索
  • 23. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 22 • WAND = Weak AND or Weighted AND の略 • AND検索とOR検索の中間のような検索 • 10個の検索条件のうち6個を満たす、みたいな • 実際は各検索条件 (ex. 単語) に重みが付いた内積演算 • スコアの上限値を元に検索候補を枝刈りしながら高速に検索 • ex) レコメンドのような多数の条件で検索するケースとか WAND検索 インデックス ユーザベクトル 文書ベクトル
  • 24. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 23 • フィールド自体に条件式を埋め込む検索 • クエリの属性情報を元に対象文書をフィルタリング • 各ドキュメントが個別に条件式を持つところがポイント • ex) 広告配信での対象ユーザ指定とか Predicateフィールド gender=male age=31 docid gender age 1 female 20 <= age < 40 2 male OR female 30 <= age <= 39 3 male 25 <= age < 35 … 文書側に埋め込まれた 条件式を元に絞り込む
  • 25. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 24 • 構成 • スキーマ・更新 • 検索・集約 • ランキング • クラスタリング • まとめ アジェンダ
  • 26. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 25 • 一般的にランキングは多段で実施 (ここでは2段を想定) • 候補文書を段階的に絞り込むことで計算コストを軽減 • 後段ほど複雑なモデルを配置 検索とランキング second-phase first-phase 重量モデルによる候補文書の並び替え 軽量モデルによる候補文書の絞り込み
  • 27. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 26 • Solr/ElasticsearchではLTR pluginの追加が必要 • それぞれのフェーズを異なるコンポーネントが管理 • 設定がバラけて管理が煩雑 検索とランキング (cont’d) second-phase first-phase LTR plugin LTR plugin Function Query Similarity Function Score Query Similarity
  • 28. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 27 • Vespaではランキング全体を一つの設定ファイルで管理 • 計算式は専用のDSLを用いて記述 • 検索時に対応するプロファイルを指定することで実行 検索とランキング (cont’d) second-phase first-phase Rank Profile
  • 29. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 28 • DSLでは四則演算、数学関数、IF文といった記述が可能 • 様々なモデルがDSLを用いて表現できます DSLによるモデル記述 スコア計算に関連するプロパティの定義 外部モデルファイルの参照 スコア計算式の記述 second-phaseのランキングの定義
  • 30. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 29 • Vespaではモデル計算で役立つ組み込み素性を多数定義 • フィールド情報のアクセス、クエリとの適合度、etc... • ただし独自素性を追加するのはちょっと大変かも... (C++実装) DSLによるモデル記述 (cont’d)
  • 31. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 30 • Vespaでは前述のtensor型を用いた行列演算を提供 • ニューラルネットや分散表現といった先端的なモデルも表現可能 テンソルを用いたスコア計算 input hidden output 1 … … 1
  • 32. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 31 • 構成 • スキーマ・更新 • 検索・集約 • ランキング • クラスタリング • まとめ アジェンダ
  • 33. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 32 • Solr/Elasticsearchでのインデックス分散 => shard/replica • 基本的にreplicaを増やすことでスケールアウト • shardの数は一度決めると変更することが困難 インデックスの分散 node1 node3 node2 node4 node1 node3 node2 node4 replica数に 偏りが生じる リバランス ノード 追加
  • 34. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 33 • Vespaではbucketというより小さい粒度で分散配置を管理 • bucketはデータ規模に応じて動的に統合・分離 • ユーザは冗長数だけを気にすればいい インデックスの分散 (cont’d) node1 node3 node2 node4 node1 node3 node2 node4 リバランス ノード 追加 より均等に データを分散
  • 35. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 34 • Vespaでは所属ホストを設定ファイルで管理 • 設定ファイルを修正・デプロイするだけでノードの増減が可能 • 必要なデータ分散なども自動で実行されます クラスタの管理 Vespaクラスタ admin container content 設定ファイル プラグイン モデル 最新設定のアップロードと反映 # vespa-deploy prepare CONFIG # vespa-deploy activate 新しいcontentノード群 の中でリバランシング 最新の設定の基づき クラスタ構成を更新
  • 36. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 35 • 構成 • スキーマ・更新 • 検索・集約 • ランキング • クラスタリング • まとめ アジェンダ
  • 37. チュートリアル資料 https://yahoojapan.github.io/vespa-tutorial/ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 36 • Vespaのいいところ • 全文検索に強い (リアルタイム性とか検索機能とか) • ランキング機能がすごく先進的 • スケーラビリティがとても高い • Vespaのイマイチなところ • データ解析用途ならElastic Stackとか使った方が楽 • C++部分の拡張が辛い (Javaの方はフレームワークが優秀) • OSS化が最近で公式以外にプラグインとか資料がほぼない まとめ