feat: enabling associating experiment results to a benchmark instance when number of instance properties exceeds experiment properties
メンテナーはふだん 1 日以内に返信
@christian-pinto がすでに取り組んでいます。
2026年9月29日 から。
評価
この issue はまだ評価されていません。
説明
What is the problem
In the current implementation if a benchmark problem (logical benchmark) defines more instance properties than experiments need for executing a benchmark instance of that problem, the experiment results cannot be associated to the correct benchmark instance. Example
num_assets: 10
num_periods: 10
budget: 4
scenario: s00
risk_aversion: "1e-4"
market_data:
artifacts_location: market_data
models:
artifacts_location: models
For this problem instance experiments only need to take one of the "models" to run. However all the keys are needed for matching.
The reason is that it is
- we define a unique "key" for each benchmark problem instance that is based on its {property-id:value} pairs
- we use the experiment binding to form a similar key from each run of the experiment
- we can then find all experiments which have same key as an instance
However this only works if the experiments have input properties that map to every instance property. If they don't one property is left out, the key is incomplete and matching fails.
Note: we can't set a static value for those properties in the experiment binding. This is because the binding describes how to create the key for all problem instances. Any static value for a property set their will only match instances with that exact value for the property - all others will never be matched.
Proposed solution
In many problems there is a split between descriptive instance properties and the instance formulation. The former are some properties that give information about the characteristics of the problem w.r.t the problem definition e.g. number of graph nodes, number of graph edges. The later are actual files defining a formulation of a problem from which the other properties can be read e.g. a json graph.
One solution is to allow defining which instance properties are descriptive (related to the problem class) and which contain the formulation (required for running a benchmark). Then the key can be created just on the formulation properties. i.e. we define the keys use for "routing".
descriptive_properties:
num_assets: 10
num_periods: 10
budget: 4
scenario: s00
risk_aversion: "1e-4"
market_data:
artifacts_location: market_data
routing_properties
models:
artifacts_location: models
Some issues:
- in certain situations, like above, this would reduce the key to a single file, which then has to be unique.
- we have to pre-decide what is descriptive - perhaps some descriptive properties could be taken as inputs.
Additional solutions considered
The underlying problem is how to map experiment runs to problem instances.
- Benchmark submission specify the target problem instance by id (instead of keys)
In this way it's known what the instance is for filtering and association purposes. We still need a binding but then only needed to show the correct values for the problem instance fields for each instance. If a value is not present in the binding it takes the instance default. We don't need to use keys
- Bind to benchmark instances not to benchmark problems
Instead of binding experiments to logical benchmarks they bind to problem instances.
- This binding can be at same level as logical benchmark -> one binding per instance - we can keep key approach as we are able to make it directly.
- This binding can be in each submission.
So we have to choose between 1 binding per problem class -> 1 binding per problem instance -> 1 binding per submission
Additional Context
In all cases we need a binding file. A question is if this should be used to create a key for identifying runs for an instance OR we use directly an identifier.
The need for "descriptive properties" is one cause of this issue -> previously we understood all the logical benchmark properties would be inputs. Now it's not clear cut.
- 主要言語
- Python
- スター
- 4
- フォーク
- 7
- 平均マージ
- 17時間 4分
- マージ済み PR(30日)
- 29
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
IBM/algorithm-nexus のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
IBM/algorithm-nexus#159 ·
メンテナーはふだん 1 日以内に返信
-
feat: attach user-defined metadata to Nexus YAML manifest files対応中かも @VassilisVassiliadis が 1 日前に担当しました。 オープンenhancement
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
IBM/algorithm-nexus#306 ·
メンテナーはふだん 1 日以内に返信
-
feat: Per benchmark instance properties対応中かも @christian-pinto が 3 日前に担当しました。 オープンenhancement
IBM/algorithm-nexus#300 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
feat: allow specifying multiple values for properties in an instance対応中かも @christian-pinto が 12 日前に担当しました。 オープンenhancement
IBM/algorithm-nexus#277 · コメント 1 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
docs: improve readmeオープン
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
IBM/algorithm-nexus#276 ·
メンテナーはふだん 1 日以内に返信
IBM/algorithm-nexus の issue をすべて見る
似ている issue
-
[BUG] Container scenario crashes without expected_recovery_time, kube DNS example uses retry_waitオープンneeds-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
krkn-chaos/krkn#1627 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
NousResearch/hermes-agent#136483 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
メンテナーはふだん 1 日以内に返信
-
[BUG] LazyStackedTensorDictStore zeroes the last byte of a new key set on the last element対応中かも @peterdsharpe が今日担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
pytorch/tensordict#2307 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信