1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/microsoft-TensorFlow-DirectML

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
BUILD.md 14 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 07:35 98f4e47

Создание TensorFlow-DirectML

Этот документ содержит инструкции по созданию частных сборок tensorflow-directml.

Ветвь 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",
)

Режим разработчика, как следует из названия, предназначен только для разработки! Его не следует использовать для каких-либо других целей. Чтобы включить режим разработчика:

Файлы разработки DirectX

Заголовочные файлы и библиотеки 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

    • Visual Studio 2017 (15.x)
    • Windows 10 SDK 10.0.17763.0 или новее
    • MSYS2 20190524 или новее
    • Bazel 0.24.1
  • WSL

    • Windows 10 Insider Build с включённой функцией WSL (у вас должны быть libd3d12.so и libdxcore.so в C:\Windows\System32\lxss\lib)
    • Ubuntu 18.04 или 20.04 с пакетом g++
    • Bazel 0.24.1

Примечание: в настоящее время из среды WSL можно собрать только версию TensorFlow-DirectML для Linux. Библиотеки D3D/DXCore необходимы для компоновки и пока недоступны через другой канал распространения. Для работы с DirectML требуется пакет nuget.exe (исполняемый файл PE), для загрузки которого также требуется взаимодействие между WSL и Windows. Мы надеемся снять эти ограничения в ближайшее время.

Build Script

Вспомогательный скрипт build.py можно использовать для сборки этого репозитория с поддержкой DirectML. Этот скрипт представляет собой тонкую оболочку вокруг команд bazel для настройки и сборки TensorFlow; вы можете использовать bazel напрямую, если хотите, но обязательно включите --config=dml. Запустите build.py --help, чтобы получить полный список опций, или просмотрите этот файл, чтобы получить полный список команд bazel, которые он выполняет.

Например, чтобы собрать репозиторий и создать колесо Python, используйте build.py --package в среде Python 3.5–3.8 с bazel на PATH.

Подробные инструкции: Windows

Эти инструкции используют Miniconda для изоляции вашей среды сборки. Это не является строго необходимым, и есть другие способы сделать это (например, виртуальные машины, контейнеры), но для целей этого руководства вы будете использовать виртуальную среду Python для создания TFDML.

Установите Visual Studio 2017

TensorFlow 1.15 собирается только с VS2017. Скачайте и установите сообщество, профессиональную или корпоративную версию.

Убедитесь, что вы также установили Windows 10 SDK версии 10.0.17763.0 или более поздней.

Установите MSYS2

Пакет MSYS2 содержит несколько инструментов POSIX, созданных для Windows, которые требуются системой сборки Bazel (оболочка bash, wget, bzip2 и т. д.). Опять же, вы можете использовать каталог установки по умолчанию или при необходимости переместить его.

После установки MSYS2 вызовите его диспетчер пакетов, чтобы установить несколько дополнительных зависимостей (замените C:\msys64 местоположением, где вы установили MSYS2):

PS> C:\msys64\usr\bin\pacman.exe -S git patch unzip

Установите Bazel

Bazel — это инструмент сборки для TensorFlow. Bazel распространяется в виде исполняемого файла, и нет этапа установки.

  1. Загрузите Bazel 0.24.1.
  2. Скопируйте/переименуйте bazel-0.24.1-windows-x86_64.exe в путь с версией, например C:\bazel\0.24.1\bazel.exe. TensorFlow будет ожидать, что bazel.exe находится в %PATH%, поэтому переименование исполняемого файла с сохранением версии в пути полезно.

Установите Miniconda

Miniconda — это пакет, который включает в себя Python, менеджер пакетов и сред под названием Conda, а также очень небольшой набор пакетов Python. Это более лёгкая альтернатива Anaconda, которая содержит сотни пакетов Python, которые не нужны для сборки. Остальная часть этого документа применима в равной степени к Anaconda, если вы предпочитаете.

Загрузите последнюю версию Miniconda3 Windows 64-bit установщика. Вы можете оставить все настройки по умолчанию, но обратите внимание на местоположение установки (оно понадобится вам позже). В примерах этого документа в качестве места установки будет использоваться «c:\miniconda3».

Создайте среду сборки Conda

Запустите приглашение Miniconda (появляется как «Anaconda PowerShell Prompt (Miniconda3)» в меню «Пуск» Windows). Отладка или выпуск в качестве аргумента, но они во многом одинаковы: отладочные сборки фактически представляют собой «выпуск с символами отладки», поскольку выходные PDB-файлы для TensorFlow без оптимизаций непозволительно велики.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/microsoft-TensorFlow-DirectML.git
git@api.gitlife.ru:oschina-mirror/microsoft-TensorFlow-DirectML.git
oschina-mirror
microsoft-TensorFlow-DirectML
microsoft-TensorFlow-DirectML
directml