Mac上安装tensorflow介绍留存

发布时间:2024年01月10日

此预版本为 macOS 11.0+ 提供了硬件加速的 TensorFlow 和 TensorFlow 插件。M1 Mac 和基于 Intel 的 Mac 通过 Apple 的 ML 计算框架支持本机硬件加速。

  • TensorFlow r2.4rc0
  • TensorFlow Addons 0.11.2
    TensorFlow 插件 0.11.2

REQUIREMENTS 要求

  • macOS 11.0+
  • Python 3.8 (required to be downloaded from?Xcode Command Line Tools?for M1 Macs).
    Python 3.8(需要从适用于 M1 Mac 的 Xcode 命令行工具下载)。

INSTALLATION 安装

An archive containing Python packages and an installation script can be downloaded from the?releases.
可以从发行版下载包含 Python 包和安装脚本的存档。

  • To quickly try this out, copy and paste the following into Terminal:
    若要快速尝试此操作,请将以下内容拷贝并粘贴到“终端”中:
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/apple/tensorflow_macos/master/scripts/download_and_install.sh)"



This will verify your system, ask you for confirmation, then create a virtual environment with TensorFlow for macOS installed.
这将验证您的系统,要求您确认,然后创建一个安装了 TensorFlow for macOS 的虚拟环境。



Alternatively, download the archive file from the releases. The archive contains an installation script, accelerated versions of TensorFlow, TensorFlow Addons, and needed dependencies.
或者,从发行版下载存档文件。该存档包含安装脚本、TensorFlow 加速版本、TensorFlow 插件和所需的依赖项。
% curl -fLO https://github.com/apple/tensorflow_macos/releases/download/v0.1alpha2/tensorflow_macos-${VERSION}.tar.gz % tar xvzf tensorflow_macos-${VERSION}.tar % cd tensorflow_macos % ./install_venv.sh --prompt

Installation on Conda 在 Conda 上安装

This pre-release version supports installation and testing using the Python from Xcode Command Line Tools. See?#153?for more information on installation in a Conda environment.
此预发布版本支持使用 Xcode 命令行工具中的 Python 进行安装和测试。有关在 Conda 环境中安装的更多信息,请参见 #153。

Notes 笔记

For M1 Macs, the following packages are currently unavailable:
对于 M1 Mac,以下软件包目前不可用:

  • SciPy and dependent packages
    SciPy 和依赖包
  • Server/Client TensorBoard packages
    服务器/客户端 TensorBoard 软件包

When installing pip packages in a virtual environment, you may need to specify?--target?as follows:
在虚拟环境中安装 pip 包时,可能需要指定?--target?如下:

% pip install --upgrade -t "${VIRTUAL_ENV}/lib/python3.8/site-packages/" PACKAGE_NAME

ISSUES AND FEEDBACK 问题和反馈

Please submit feature requests or report issues via?GitHub Issues.
请通过 GitHub 问题提交功能请求或报告问题。

ADDITIONAL INFORMATION 附加信息

Device Selection (Optional)
设备选择(可选)

It is not necessary to make any changes to your existing TensorFlow scripts to use ML Compute as a backend for TensorFlow and TensorFlow Addons.
无需对现有 TensorFlow 脚本进行任何更改,即可将 ML Compute 用作 TensorFlow 和 TensorFlow 插件的后端。

There is an optional?mlcompute.set_mlc_device(device_name='any')?API for ML Compute device selection. The default value for?device_name?is?'any', which means ML Compute will select the best available device on your system, including multiple GPUs on multi-GPU configurations. Other available options are?'cpu'?and?'gpu'. Please note that in eager mode, ML Compute will use the CPU. For example, to choose the CPU device, you may do the following:
有一个可选?mlcompute.set_mlc_device(device_name='any')?的 API 用于 ML 计算设备选择。的?device_name默认值为 ,?'any'?这意味着 ML 计算将选择系统上的最佳可用设备,包括多 GPU 配置上的多个 GPU。其他可用选项包括?'cpu'?和?'gpu'?。请注意,在预先模式下,ML 计算将使用 CPU。例如,要选择 CPU 设备,您可以执行以下操作:

# Import mlcompute module to use the optional set_mlc_device API for device selection with ML Compute. from tensorflow.python.compiler.mlcompute import mlcompute # Select CPU device. mlcompute.set_mlc_device(device_name='cpu') # Available options are 'cpu', 'gpu', and 'any'.

Unsupported TensorFlow Features
不支持的 TensorFlow 功能

The following TensorFlow features are currently not supported in this fork:
此分支目前不支持以下 TensorFlow 功能:

Logs and Debugging 日志和调试

Graph mode 图形模式

Logging provides more information about what happens when a TensorFlow model is optimized by ML Compute. Turn logging on by setting the environment variable?TF_MLC_LOGGING=1?when executing the model script. The following is the list of information that is logged in graph mode:
日志记录提供了有关 ML 计算优化 TensorFlow 模型时发生的情况的更多信息。通过在执行模型脚本时设置环境变量?TF_MLC_LOGGING=1?来打开日志记录。以下是在图形模式下记录的信息列表:

  • Device used by ML Compute.
    ML 计算使用的设备。
  • Original TensorFlow graph without ML Compute.
    没有 ML 计算的原始 TensorFlow 图。
  • TensorFlow graph after TensorFlow operations have been replaced with ML Compute.
    TensorFlow 操作后的 TensorFlow 图已替换为 ML Compute。
    • Look for MLCSubgraphOp nodes in this graph. Each of these nodes replaces a TensorFlow subgraph from the original graph, encapsulating all the operations in the subgraph. This, for example, can be used to determine which operations are being optimized by ML Compute.
      在此图中查找 MLCSubgraphOp 节点。这些节点中的每一个都替换了原始图中的 TensorFlow 子图,将所有操作封装在子图中。例如,这可用于确定 ML 计算正在优化哪些操作。

  • Number of subgraphs using ML Compute and how many operations are included in each of these subgraphs.
    使用 ML 计算的子图数,以及每个子图中包含的操作数。
    • Having larger subgraphs that encapsulate big portions of the original graph usually results in better performance from ML Compute. Note that for training, there will usually be at least two MLCSubgraphOp nodes (representing forward and backward/gradient subgraphs).
      使用较大的子图来封装原始图形的大部分,通常可以提高 ML 计算的性能。请注意,对于训练,通常至少有两个 MLCSubgraphOp 节点(表示前向和后向/梯度子图)。

  • TensorFlow subgraphs that correspond to each of the ML Compute graphs.
    与每个 ML 计算图相对应的 TensorFlow 子图。

Eager mode 急切模式

Unlike graph mode, logging in eager mode is controlled by?TF_CPP_MIN_VLOG_LEVEL. The following is the list of information that is logged in eager mode:
与图形模式不同,预先模式中的日志记录由?TF_CPP_MIN_VLOG_LEVEL?控制。以下是在预先模式下记录的信息列表:

  • The buffer pointer and shape of input/output tensor.
    输入/输出张量的缓冲区指针和形状。
  • The key for associating the tensor’s buffer to built the?MLCTraining?or?MLCInference?graph. This key is used to retrieve the graph and run a backward pass or an optimizer update.
    用于关联张量缓冲区以构建?MLCTraining?or?MLCInference?图的键。此键用于检索图形并运行向后传递或优化器更新。
  • The weight tensor format.
    权重张量格式。
  • Caching statistics, such as insertions and deletions.
    缓存统计信息,例如插入和删除。

Tips for debugging 调试提示

  • Larger models being trained on the GPU may use more memory than is available, resulting in paging. If this happens, try decreasing the batch size or the number of layers.
    在 GPU 上训练的较大模型可能会使用比可用内存更多的内存,从而导致分页。如果发生这种情况,请尝试减小批大小或层数。
  • TensorFlow is multi-threaded, which means that different TensorFlow operations, such as?MLCSubgraphOp, can execute concurrently. As a result, there may be overlapping logging information. To avoid this during the debugging process, set TensorFlow to execute operators sequentially by setting the number of threads to 1 (see?tf.config.threading.set_inter_op_parallelism_threads).
    TensorFlow 是多线程的,这意味着不同的 TensorFlow 操作(例如?MLCSubgraphOp?)可以并发执行。因此,可能存在重叠的日志记录信息。为了避免在调试过程中出现这种情况,请通过将线程数设置为 1 来将 TensorFlow 设置为按顺序执行运算符(请参阅?tf.config.threading.set_inter_op_parallelism_threads)。
  • In eager mode, you may disable the conversion of any operation to ML Compute by using?TF_DISABLE_MLC_EAGER=“;Op1;Op2;...”. The gradient op may also need to be disabled by modifying the file?$PYTHONHOME/site-packages/tensorflow/python/ops/_grad.py?(this avoids TensorFlow recompilation).
    在预先模式下,您可以使用?TF_DISABLE_MLC_EAGER=“;Op1;Op2;...”?禁用任何操作到 ML 计算的转换。可能还需要通过修改文件?$PYTHONHOME/site-packages/tensorflow/python/ops/_grad.py?来禁用梯度运算(这样可以避免 TensorFlow 重新编译)。
  • To initialize allocated memory with a specific value, use?TF_MLC_ALLOCATOR_INIT_VALUE=<init-value>.
    要使用特定值初始化分配的内存,请使用?TF_MLC_ALLOCATOR_INIT_VALUE=<init-value>?。
  • To disable ML Compute acceleration (e.g. for debugging or results verification), set the environment variable?TF_DISABLE_MLC=1.
    要禁用 ML 计算加速(例如用于调试或结果验证),请设置 环境变量?TF_DISABLE_MLC=1?。
文章来源:https://blog.csdn.net/lwx666sl/article/details/135488359
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。