Этот документ содержит инструкции по созданию частных сборок tensorflow-directml.
Данный проект является ответвлением официального репозитория tensorflow, ориентированным на TensorFlow версии 1.15. Это ответвление не будет объединяться с основной веткой, поскольку TensorFlow не принимает новые функции для предыдущих выпусков, поэтому ветка master
основана на версии v1.15.0 из основного репозитория. Изменения DirectML в ветке master
не появляются.
Ветвь directml
считается основной ветвью разработки в этом репозитории. Эта ветвь содержит изменения, связанные с DirectML, а также исправления безопасности в основном репозитории (например, изменения в 1.15.1, 1.15.2, 1.15.3 и т. д.). Поскольку этот проект всё ещё находится в стадии ранней разработки, ветвь directml
может быть нестабильной и ссылаться на «предварительную» версию DirectML, которая может измениться. Мы рекомендуем тестировать предварительно собранные пакеты tensorflow-directml на PyPI; эти сборки создаются из ветки directml
, но только когда упоминается стабильная версия DirectML. В качестве альтернативы мы рекомендуем создавать сборки на основе тегов выпуска, связанных с выпусками PyPI.
В этом репозитории могут периодически упоминаться разрабатываемые версии DirectML для тестирования новых функций. Например, экспериментальные API добавляются в DirectMLPreview.h
, что может привести к критическим изменениям; как только API появляется в DirectML.h
, он становится неизменным. Для предварительной сборки DirectML необходимо включить режим разработчика, иначе она не загрузится. Это ограничение предназначено для того, чтобы избежать долгосрочной зависимости от библиотеки предварительного просмотра. Пакеты на PyPI будут выпускаться только тогда, когда репозиторий зависит от стабильной версии DirectML.
Вы можете определить, ссылается ли текущее состояние репозитория на разрабатываемую версию DirectML, проверив tensorflow/workspace.bzl
. Если имя пакета — Microsoft.AI.DirectML.Preview
или версия заканчивается на -dev*
, то потребуется режим разработчика. Например, следующий фрагмент показывает зависимость от DirectML Microsoft.AI.DirectML.Preview.1.5.0-dev20210406, для которой требуется режим разработчика.
dml_repository(
name = "dml_redist",
package = "Microsoft.AI.DirectML.Preview",
version = "1.5.0-dev20210406",
source = "https://pkgs.dev.azure.com/ms/DirectML/_packaging/tensorflow-directml/nuget/v3/index.json",
build_file = "//third_party/dml/redist:BUILD.bazel",
)
Режим разработчика, как следует из названия, предназначен только для разработки! Его не следует использовать для каких-либо других целей. Чтобы включить режим разработчика:
Windows
WSL
~/.directml.conf
, с содержимым devmode = 1
.Заголовочные файлы и библиотеки DirectX, используемые для создания приложений на базе DirectX, включены в Windows SDK; однако этот SDK недоступен при сборке для Linux, и некоторые из необходимых API могут ещё не существовать в общедоступных версиях SDK. По этим причинам файлы разработки DirectX интегрированы в этот проект немного по-другому.
Файлы заголовков для Direct3D, DXCore и DirectML загружаются автоматически. Этот проект не использует какие-либо заголовки DirectX, включённые в Windows 10 SDK, за исключением dxgi1_6.h, который является частью Windows 10 SDK 10.0.17763.0 или более поздней версии. Сборкам Windows также требуются библиотеки импорта для D3D12 и DXGI, которые включены в Windows 10 SDK версии 10.0.17763.0 или новее.
Сборки Linux вообще не требуют Windows 10 SDK (для Linux такого SDK не существует), но на вашей сборочной машине должен быть установлен WSL с общими библиотеками DirectX, доступными в /usr/lib/wsl/lib
.
Использование распространяемой библиотеки DirectML регулируется отдельной лицензией, которая находится в составе пакета. ## Build Environment
Мы протестировали следующие среды сборки и рекомендуем использовать менеджер среды Python, такой как Miniconda, чтобы изолировать ваши сборки.
Windows
WSL
C:\Windows\System32\lxss\lib
)Примечание: в настоящее время из среды WSL можно собрать только версию TensorFlow-DirectML для Linux. Библиотеки D3D/DXCore необходимы для компоновки и пока недоступны через другой канал распространения. Для работы с DirectML требуется пакет nuget.exe (исполняемый файл PE), для загрузки которого также требуется взаимодействие между WSL и Windows. Мы надеемся снять эти ограничения в ближайшее время.
Вспомогательный скрипт build.py можно использовать для сборки этого репозитория с поддержкой DirectML. Этот скрипт представляет собой тонкую оболочку вокруг команд bazel для настройки и сборки TensorFlow; вы можете использовать bazel напрямую, если хотите, но обязательно включите --config=dml
. Запустите build.py --help
, чтобы получить полный список опций, или просмотрите этот файл, чтобы получить полный список команд bazel, которые он выполняет.
Например, чтобы собрать репозиторий и создать колесо Python, используйте build.py --package
в среде Python 3.5–3.8 с bazel
на PATH.
Эти инструкции используют Miniconda для изоляции вашей среды сборки. Это не является строго необходимым, и есть другие способы сделать это (например, виртуальные машины, контейнеры), но для целей этого руководства вы будете использовать виртуальную среду Python для создания TFDML.
TensorFlow 1.15 собирается только с VS2017. Скачайте и установите сообщество, профессиональную или корпоративную версию.
Убедитесь, что вы также установили Windows 10 SDK версии 10.0.17763.0 или более поздней.
Пакет MSYS2 содержит несколько инструментов POSIX, созданных для Windows, которые требуются системой сборки Bazel (оболочка bash, wget, bzip2 и т. д.). Опять же, вы можете использовать каталог установки по умолчанию или при необходимости переместить его.
После установки MSYS2 вызовите его диспетчер пакетов, чтобы установить несколько дополнительных зависимостей (замените C:\msys64
местоположением, где вы установили MSYS2):
PS> C:\msys64\usr\bin\pacman.exe -S git patch unzip
Bazel — это инструмент сборки для TensorFlow. Bazel распространяется в виде исполняемого файла, и нет этапа установки.
bazel-0.24.1-windows-x86_64.exe
в путь с версией, например C:\bazel\0.24.1\bazel.exe
. TensorFlow будет ожидать, что bazel.exe находится в %PATH%
, поэтому переименование исполняемого файла с сохранением версии в пути полезно.Miniconda — это пакет, который включает в себя Python, менеджер пакетов и сред под названием Conda, а также очень небольшой набор пакетов Python. Это более лёгкая альтернатива Anaconda, которая содержит сотни пакетов Python, которые не нужны для сборки. Остальная часть этого документа применима в равной степени к Anaconda, если вы предпочитаете.
Загрузите последнюю версию Miniconda3 Windows 64-bit установщика. Вы можете оставить все настройки по умолчанию, но обратите внимание на местоположение установки (оно понадобится вам позже). В примерах этого документа в качестве места установки будет использоваться «c:\miniconda3».
Запустите приглашение Miniconda (появляется как «Anaconda PowerShell Prompt (Miniconda3)» в меню «Пуск» Windows). Отладка или выпуск в качестве аргумента, но они во многом одинаковы: отладочные сборки фактически представляют собой «выпуск с символами отладки», поскольку выходные PDB-файлы для TensorFlow без оптимизаций непозволительно велики.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )