Skip to content

Conversation

@emnigma
Copy link
Collaborator

@emnigma emnigma commented Sep 20, 2023

This PR implements path selection with Graph Neural Network (GNN). This approach allows GNN to learn not only application context features, but also application graph structure to better predict desirable states to propagate.

GNN accepts BlockGraph with custom features as an input, uses onnxruntime framework as an inference provider. BlockGraph consists of two types of vertices: StateFeatures and BlockFeatures. They serve as an intermediate graph representation before conversion to onnx tensors.

BlockGraph is created with following rules:

  • consecutive statements are put in one block
  • block can't contain two external function calls, each external call is interpreted as an end of current block
  • first statements after control flow branching statement start a new block
  • if statement has multiple input edges it is allocated to new block

@emnigma emnigma force-pushed the hetero-gnn-path-selector branch from 9fa2921 to 919c57e Compare September 20, 2023 09:19
Copy link
Member

@sergeypospelov sergeypospelov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please, contact @sergeyrid and unify with #60.

Main problems:

  • usvm-core, usvm-jvm shouldn't depend on ML path selection. All ML-based path selectors should be located in a separate module.
  • No hardcoded strings like "/Users/emax/Data/usvm/Game_env/test_model.onnx"
  • Add tests, please

@emnigma emnigma closed this Oct 4, 2023
@emnigma emnigma mentioned this pull request Oct 4, 2023
petrukhinandrew pushed a commit to petrukhinandrew/usvm that referenced this pull request Sep 25, 2025
Signed-off-by: Старцев Матвей <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants