-
Notifications
You must be signed in to change notification settings - Fork 8
Settings
While we make an effort to provide a no-hassle works-out-of-the-box FINN+ experience, it might still be beneficial to read this page to get an overview of how FINN+ is configured.
FINN+ checks the following locations in order to find a file named settings.yaml:
- (If defined) Path given in the environment variable
FINN_SETTINGS - The directory where FINN is installed (formerly
FINN_ROOT). This is useful for having multiple development versions with different settings ~/.finn/~/.config/
If you don't have a settings file, FINN+ will prompt you to create one with a built-in wizard. If you really want to skip this and use the defaults, pass --accept-defaults. If you want to run the wizard again, use
finn wizard settings
# or
finn settings createTo quickly show which settings file is being read, and to what its contents resolve, use
finn settings showTo edit the settings manually, you can also run
finn settings editwhich will open the resolved settings file in your editor of choice.
FINN+ has certain dependencies that cannot be installed using Poetry / Python package management. For those dependencies, we have a separate system. FINN+ will read a definition file that contains all dependencies it needs (as well as commit numbers and some other options). This file is by default located in finn/external_dependencies.yaml but can be configured by overwriting the finn_deps_definitions setting or the FINN_DEPS_DEFINITIONS environment variable. Relative paths are resolved relative to the FINN+ root directory.
To resolve the destination of the dependencies, FINN+ checks the dependency directory in this order:
- Command line parameter given to
finn. If available, this is chosen - (If defined) Path given in the environment variable
FINN_DEPS - Value loaded from the key
finn_depsif found insettings.yaml - The fallback path coded into
finnitself:./finn_deps
Note
If a relative path is given, it is searched for from the location where FINN itself is located.
Warning
Beware that if you have a small HOME directory, you should not place the dependencies in your home directory, since the dependency directory can become quite large.
To inspect the currently used dependencies, run
finn deps showAnd, as with the settings, to edit them simply run
finn deps editThe updated dependency definitions will take effect when you next execute a build flow or run
finn deps updatemanually.
FINN produces a large amount of files while running. The location where these are stored is resolved in this order:
- Command line parameter given to
finn. If available, this is chosen - (If defined) Path given in the environment variable
FINN_BUILD_DIR - If defined in
settings.yaml, it is read from the keyfinn_build_dir - If no other command is given, the build files get stored in a directory called
FINN_TMPin the same directory as the build flow file
Note
If the given path is relative, it is searched for from the location of the build file.
If you started FINN+ with default settings, the following default values will be used:
| Key | Default |
|---|---|
| automatic_dependency_updates | True |
| deps_git_timeout | 100 |
| num_default_workers | 75% of available cores |
| finn_build_dir | ./FINN_TMP |
| finn_deps | ./finn_deps |
| finn_deps_definitions | ./external_dependencies.yaml |
When running several hundred flows in parallel, you may not want them to update all dependencies always. You might also just not have internet, and don't want to wait for the git timeout. In this case you can pass --skip-dep-update / -s to skip this. Although not recommended, you can also make this permanent by setting
automatic_dependency_updates: falsein your settings.yaml file. In this case you then need to update manually using finn deps update.
If you kept your FINN_BUILD_DIR complete and used saved_intermediate_models: true, you can make changes to the config and can start from an already reached step. Either set start_step and stop_step in your config, or simply pass --start and/or --stop to finn. If the field in your config is not set, this will overwrite it and execute the specified steps. A common flow is to execute the flow until one of the last steps is reached and then use --start to quickly iterate a certain step in the middle of the flow without having to do the slow steps again (like for example IPGen).
FINN is configured through a number of environment variables. By transitioning to FINN+, some of them were renamed or deleted, and some new ones created and some moved to the new settings.yaml file:
Caution
Table is work in progress!
| FINN | FINN+ | Comment |
|---|---|---|
| FINN_BUILD_DIR | FINN_BUILD_DIR | Path to place generated files during a build |
| - | FINN_DEPS | Path to place non-Python dependencies |
| - | FINN_DEPS_DEFINITIONS | Path to the dependency definition file |
| - | FINN_RTLLIB, FINN_NOTEBOOKS, FINN_QNN_DATA, FINN_TESTS, ... | Paths to FINN components |
| FINN_ROOT | FINN_ROOT (deprecated) | Was deprecated and replaced by the custom variables for reasons related to packaging |
| FINN_SKIP_DEB_REPOS | AUTOMATIC_DEPENDENCY_UPDATES (Settings only, default: True) | Determines whether dependencies are updated before launching FINN itself |
| - | FINN_SETTINGS | Where settings.yaml is located. If not given, is resolved in the order specified in Configuration
|
| FINN_HOST_BUILD_DIR | - | |
| FINN_XILINX_PATH, FINN_XILINX_VERSION | XILINX_VIVADO, XILINX_VIITS, XILINX_HLS | Paths to the Xilinx tools. XILINX_VIVADO etc. are made available automatically, if the tools are sourced in your environment. |
| FINN_DOCKER_* | - | |
| FINN_SINGULARITY | - | |
| NUM_DEFAULT_WORKERS | NUM_DEFAULT_WORKERS | Variable is the same, but in FINN+, if not given, is automatically calculated to be 75% of the core count returned by Pythons psutil package, instead of being hardcoded to 4 |
π Home
- Migration Guide
- Building an Accelerator
- DataflowBuildConfig Documentation
- Example Models
- Build Guides:
- Brevitas - Quantization library
- FINN+ Repository
- Custom Steps Library