Skip to content

[TVM] Relax API #576

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 19 commits into from
May 2, 2025
Merged

Conversation

Vladislav-Denisov
Copy link
Contributor

@Vladislav-Denisov Vladislav-Denisov commented Apr 1, 2025

Добавлена поддержка Relax API для Apache TVM.

@@ -354,6 +354,8 @@
изображения.
- `ChannelSwap` - тег, необязательный для заполнения. Описывает изменение порядка каналов на
входном изображении. По умолчанию будет установлен порядок (2, 0, 1), что соответствует BGR.
- `HighLevelIR` - тег, необязательный для заполнения. Определяет используемое высокоуровневое API: `relay` или `relax`. По умолчанию задается значение `relay`.
- `VirtualMachine` - тег, необязательный для заполнения. Определяет необходимость использования Virtual Machine API. Возможные значения: `True`, `False`. По умолчанию не установлен.
Copy link
Contributor

Choose a reason for hiding this comment

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

@Vladislav-Denisov, по моим представлениям можно оставить только один тег, который определяет API (то, что называется HighLevelIR, имеет смысл переименовать в HighLevelAPI) и разрешить 3 возможных значения Relay, VM, Relax. В TVM, насколько я понимаю, есть понятие и промежуточного представления модели, и программного интерфейса. Relay и VM APIs работают с Relay-представлением, а Relax API - с Relax.

@ismukhin, поправьте меня, если я не права.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@valentina-kustikova В таком случае могу предложить немного другие варианты: Relay, RelayVM, RelaxVM. Так как Relay и Relax - это по сути именно представление.
Например, про Relax в официальной документации написано следующее.

Relax is a high-level abstraction for graph optimization and transformation in Apache TVM stack

А вот использовать VM или нет - это уже про способ запуска оптимизированной модели.

@@ -31,6 +31,7 @@
<Layout>NCHW</Layout>
<Target>llvm</Target>
<VirtualMachine>True</VirtualMachine>
<HighLevelIR></HighLevelIR>
Copy link
Contributor

Choose a reason for hiding this comment

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

Здесь нужны автоматические тесты для проверки работы Relax API.

Copy link
Contributor Author

@Vladislav-Denisov Vladislav-Denisov Apr 15, 2025

Choose a reason for hiding this comment

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

Relax поддерживается с версии tvm 0.16 и выше.
В PyPi для пакета apache-tvm самая последняя доступная версия 0.14
То есть в нашем случае необходимо собрать подходящую версию из исходников и использовать её.
Можем ли мы при инициализации окружения в CI как-то подсунуть туда собранную версию, которая будет лежать на каком-то сервере/хранилище?

Copy link
Contributor

Choose a reason for hiding this comment

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

Выглядит так, что мы можем описать отдельный job в https://github.com/itlab-vision/dl-benchmark/blob/master/.github/workflows/smoke_test.yml и прописать перечень команд для сборки tvm из исходников по аналогии с тем, как ставятся зависимости. Но это мое предположение, надо пробовать.

Copy link
Contributor

Choose a reason for hiding this comment

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

Если разобраться с тем, как из одного джоба прокинуть собранный tvm в другой, то получится. Но, скорее всего, будет проблемно в плане очень большого количества времени и джоб смок теста должен будет синхронизироваться по окончании джобы сборки, чтобы поставить tvm в своё окружение.
Тут, как мне кажется, проще будет собрать исходники, положить в один из наших репозиториев, выкачивать их и ставить через wheel в питоновское окружение

@Vladislav-Denisov Vladislav-Denisov marked this pull request as ready for review April 24, 2025 18:03
@Vladislav-Denisov
Copy link
Contributor Author

@valentina-kustikova посмотрите, пожалуйста

@valentina-kustikova
Copy link
Contributor

@ismukhin, посмотрите, пожалуйста.

ismukhin
ismukhin previously approved these changes Apr 28, 2025
@Vladislav-Denisov Vladislav-Denisov requested a review from ismukhin May 1, 2025 16:39
Copy link
Contributor

@valentina-kustikova valentina-kustikova left a comment

Choose a reason for hiding this comment

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

@Vladislav-Denisov, текущую реализацию заливаю в основную ветку. Дальнейшие исправления предлагаю отдельными пулл-реквестами приносить.

@valentina-kustikova valentina-kustikova merged commit 96946b5 into itlab-vision:master May 2, 2025
5 checks passed
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.

3 participants