MacOS 系统成功安装 tensorflow 步骤

这篇具有很好参考价值的文章主要介绍了MacOS 系统成功安装 tensorflow 步骤。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安装环境

  • OS Platform and Distribution

macos Ventura 13.1

  • Architecture

Intel x86_64

  • Tensorflow Version

tf 2.11.0

  • Python version

3.9.13

  • Bazel version

5.3.0

  • Xcode version

14.2

从源代码构建

macOS设置

  • miniconda创建虚拟环境及tensorflow依赖项安装
conda create -n tf python==3.9.13
conda activate tf
pip install -U pip numpy wheel
pip install -U keras_preprocessing --no-deps
  • 安装Bazel
brew install bazel
  • 下载 TensorFlow 源代码
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
git checkout r2.11

配置 build

# Check whether script is executing in a VirtualEnv or Conda environment
if [ -z "$VIRTUAL_ENV" ] && [ -z "$CONDA_PREFIX" ] ; then
	echo "VirtualEnv or Conda env is not activated"
	exit -1
fi

# Set the virtual environment path
if ! [ -z "$VIRTUAL_ENV" ] ; then
  VENV_PATH=$VIRTUAL_ENV
elif ! [ -z "$CONDA_PREFIX" ] ; then
  VENV_PATH=$CONDA_PREFIX
fi

# Set the bin and lib directories
VENV_BIN=$VENV_PATH/bin
VENV_LIB=$VENV_PATH/lib

# bazel tf needs these env vars
export PYTHON_BIN_PATH=$VENV_BIN/python
export PYTHON_LIB_PATH=`ls -d $VENV_LIB/*/ | grep python`

# Set the native architecture optimization flag, which is a default
COPT="--copt=-march=native"

# Determine the available features of your CPU
raw_cpu_flags=`sysctl -a | grep machdep.cpu.features | cut -d ":" -f 2 | tr '[:upper:]' '[:lower:]'`

# Append each of your CPU's features to the list of optimization flags
for cpu_feature in $raw_cpu_flags
do
	case "$cpu_feature" in
		"sse4.1" | "sse4.2" | "ssse3" | "fma" | "cx16" | "popcnt" | "maes")
		    COPT+=" --copt=-m$cpu_feature"
		;;
		"avx1.0")
		    COPT+=" --copt=-mavx"
		;;
		*)
			# noop
		;;
	esac
done

echo $COPT

# First ensure a clear working directory in case you've run bazel previously
bazel clean --expunge

# Run TensorFlow configuration (accept defaults unless you have a need)
python configure.py

# Build the TensorFlow pip package
bazel build -c opt $COPT -k //tensorflow/tools/pip_package:build_pip_package
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

安装测试软件包

cd ../
pip uninstall tensorflow  # remove current version

pip install /tmp/tensorflow_pkg/tensorflow-version-tags.whl
python -c "import tensorflow as tf; print(tf.__version__)"

编译异常处理

1、第三方源码包无法下载

  • 问题现象:
	Download from https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/XNNPACK/archive/a50369c0fdd15f0f35b1a91c964644327a88d480.zip failed: class java.io.IOException connect timed out
  • 解决方法:

    1. 从该链接直接下载文件包,https://github.com/google/XNNPACK/archive/a50369c0fdd15f0f35b1a91c964644327a88d480.zip,(国内下载不了,方法不再赘述)。
    2. 本地搭建http服务器,用于存放无法下载的程序包,提供本地下载地址
    3. 修改bzl文件,增加本地链接,例如以上链接是在tensorflow\tensorflow\workspace2.bzl中

原文内容:

tf_http_archive(
    name = "XNNPACK",
    sha256 = "7a16ab0d767d9f8819973dbea1dc45e4e08236f89ab702d96f389fdc78c5855c",
    strip_prefix = "XNNPACK-e8f74a9763aa36559980a0c2f37f587794995622",
    urls = tf_mirror_urls("https://github.com/google/XNNPACK/archive/e8f74a9763aa36559980a0c2f37f587794995622.zip"),
)

替换为:

tf_http_archive(
    name = "XNNPACK",
    sha256 = "ca3a5316b8161214f8f22a578fb638f1fccd0585eee40301363ffd026310379a",
    strip_prefix = "XNNPACK-a50369c0fdd15f0f35b1a91c964644327a88d480",
    urls = ["https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/XNNPACK/archive/a50369c0fdd15f0f35b1a91c964644327a88d480.zip",
            "http://127.0.0.1:8080/tensorflow/XNNPACK-a50369c0fdd15f0f35b1a91c964644327a88d480.zip"
    ],
)

2、Go无法下载安装

  • 问题现象:

    			Download from https://golang.org/dl/?mode=json&include=all failed: class java.io.IOException connect timed out
    
  • 解决方法:

  1. 该错误io_bazel_rules_go需要下载go软件包引起的,需要修改io_bazel_rules_go这个包中的sdk.bzl文件。从tensorflow\tensorflow\workspace2.bzl中找到这个包的下载地址,下载到本地,放到本地http服务器
  2. 修改tensorflow\tensorflow\workspace2.bzl文件,注意sha256也需要修改,可以通过tensorflow编译错误获取,同时需要删除/var/tmp/bazel[loginName]/cache/repos/v1/content_addressable/sha256下面和sha256同名文件,避免无法使用修改后的文件:

原文内容:

	tf_http_archive(
    name = "io_bazel_rules_go",
    sha256 = "80cbfe287bacbe6cec97f0446a413fee7c21dafda3981b9de71a35eebbc89e1f",
    urls = tf_mirror_urls("https://github.com/bazelbuild/rules_go/releases/download/v0.34.0/rules_go-v0.34.0.zip"),
    ],
)



	tf_http_archive(
    name = "io_bazel_rules_go",
    sha256 = "80cbfe287bacbe6cec97f0446a413fee7c21dafda3981b9de71a35eebbc89e1f",
    #urls = tf_mirror_urls("https://github.com/bazelbuild/rules_go/releases/download/v0.34.0/rules_go-v0.34.0.zip"),
    urls = ["http://127.0.0.1:8080/tensorflow/rules_go-v0.34.0.zip"
    ],
)

2、下载go.json文件,放到本地http服务器,sha256值需要计算传入,可以通过替换bzl中某个包,让tensorflow编译时报错,提示出该文件的sha256值

3、解压下载的zip包,打开 rules*_go-v0.34.0\go\private\sdk.bzl,修改以下内容*

原文内容:

ctx.download(
            url = [
                "https://golang.org/dl/?mode=json&include=all",
                "https://golang.google.cn/dl/?mode=json&include=all",
            ],
            output = "versions.json",
        )

......

_go_download_sdk = repository_rule(
    implementation = _go_download_sdk_impl,
    attrs = {
        "goos": attr.string(),
        "goarch": attr.string(),
        "sdks": attr.string_list_dict(),
        "urls": attr.string_list(default = ["https://dl.google.com/go/{}"]),
        "version": attr.string(),
        "strip_prefix": attr.string(default = "go"),
    },
)

替换为

ctx.download(
url = [
#"https://golang.org/dl/?mode=json&include=all",
#"https://golang.google.cn/dl/?mode=json&include=all",
"http://127.0.0.1:8080/tensorflow/go.json",
],
output = "versions.json",
sha256 = "47bd74d7eac125a61194d1aa2688c2da3e3bc1bb0981d41a7dd0e9f9cc88d57c",
)

......

_go_download_sdk = repository_rule(
    implementation = _go_download_sdk_impl,
    attrs = {
        "goos": attr.string(),
        "goarch": attr.string(),
        "sdks": attr.string_list_dict(),
        "urls": attr.string_list(default = ["http://127.0.0.1:8080/tensorflow/{}"]),
        "version": attr.string(),
        "strip_prefix": attr.string(default = "go"),
    },
)

4、重新zip压缩rules_go-v0.34.0.zip,需要根据编译错误提示更改sha256

3、ld: malformed trie, node past end file ‘bazel-out/host/bin/_solib_darwin_x86_64/libtensorflow_Spython_S_Upywrap_Utensorflow_Uinternal.so’

1、该问题是由于xcode14升级引起的,将ld切换成13版本可以暂时解决该问题,查看该链接

2、从苹果官网下载xcode13,解压后,将ld拷贝到本机目录下,本机的备份

4、安装打包好的wheel时,提示:error:tensorflow-*.whl is not suported wheel on this platform

1、tensorflow, 版本不对,目前编译打包成功的时v2.11.0版本

2、python版本不对,必须用编译打包时使用的python pip安装

5、dlopen(/Users/davidlaxer/tensorflow-metal/lib/python3.8/site-packages/tensorflow-plugins/libmetal_plugin.dylib, 6): Symbol not found:

1、本地原因是之前安装了tensorflow-macos,需要卸载之前安装的所有tensorflow依赖包文章来源地址https://www.toymoban.com/news/detail-861185.html

到了这里,关于MacOS 系统成功安装 tensorflow 步骤的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySql启动错误(Mac系统 安装 mysql-8.0.32-macos13-arm64 后每次点击启动 无法启动) --- 已解决

    MySql启动的时候: 立即变红! 查看日志如下: 2023-03-04T14:18:01.089671Z 0 [System] [MY-010910] [Server] /usr/local/mysql/bin/mysqld: Shutdown complete (mysqld 8.0.32) MySQL Community Server - GPL. 2023-03-04T14:18:10.304169Z 0 [System] [MY-010116] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.32) starting as process 90802 2023-03-04T14:18:10.3

    2023年04月19日
    浏览(37)
  • macOS安装和配置mysql具体步骤

            MySQL是一个开源的关系数据库管理系统(RDBMS),广泛用于构建Web应用程序和管理大型数据集。它使用SQL(结构化查询语言)作为管理数据的主要语言,它因其易用性、可靠性和可扩展性而广受欢迎。MySQL是由Oracle公司开发的,可用于各种操作系统,包括Windows、Linux、

    2024年02月12日
    浏览(33)
  • MacOS重装系统的详细操作步骤!

    MacOS重装和Windows重装过程完全不同,但是又有相似的方法。Windows重装可以保留数据,也可以不保留;可以打开Windows.iso镜像升级安装,也可以使用安装设备完全重装。MacOS重装系统也有这些对应的选择。 macOS系统重装虽说有不同的方法,实际上安装的界面几乎相同。一起来看

    2024年04月12日
    浏览(31)
  • 查看mac是macOS x64还是macOS ARM64系统

    打开终端输入:

    2024年02月15日
    浏览(38)
  • macOS(M系列)安装BurpSuite 详细步骤

    目录 前言  关于Java环境部分(进入正题) 一 卸载Java环境  二 安装Java环境  关于BurpSuite部分(正题分题) 关于破解部分  网安人 网安魂 网安都是人上人 正所谓工欲善其事,必先利其器,才有了这篇文章 由于最近换了MacBook Pro(M2芯片),所有工具都要重新安装,遇到了一

    2024年02月13日
    浏览(51)
  • 老Mac电脑安装macOS Ventura实战

    前提说明:此实战适用于老旧Mac电脑(2015年之前的,无法在系统设置中升级macOS Ventura系统的电脑)安装macOS Ventura系统! 软件: OpenCore-Patcher-GUI.app.zip    2023年版本v1.2.1已支持 macOS Sonoma new------------2024更新----------------------------- macOS 14.2 系统部分机型和基于Metal 3802显卡的机型

    2024年02月09日
    浏览(55)
  • ThinkPad T430 黑苹果Hackintosh 使用OpenCore成功安装macOS 14.3 Sonoma

    先放几张图,如果有感兴趣的,点个赞再走呗。 有人想看,我才有动力去慢慢补文字,讲述一下详细过程,写个教程供大家参考。 过去一直以为,老电脑只能黑苹果低版本的macOS。今天成功安装了最新的Sonoma,运行流畅,连超高清的屏幕保护都非常丝滑,感觉不出卡顿。而且

    2024年04月27日
    浏览(78)
  • Mac ❀ 如何在MacOS上安装pip软件包

    以 requests 工具包为例:

    2024年01月18日
    浏览(47)
  • 终于,老Mac可以跨级安装macOS Ventura了

    几天前,我在GitHub上看到了一条消息。 开发者Dortania的OpenCore-Legacy-Patcher终于更新了! 开发者在此版本说明中写道: OpenCore-Legacy-Patcher终于提供macOS Ventura的测试版支持了! 喜欢尝试的果粉可不要错过! 版本更新日志是这样写的(翻译): Ventura特定更新: -解决AMD Polaris外部

    2024年02月04日
    浏览(33)
  • 在 macOS 上安装 Rust 开发环境并运行第一个程序的详细步骤

    首先,打开终端并执行以下命令来安装 Rust 环境: 该命令将下载并运行 Rust 安装脚本。按照提示完成 Rust 环境的安装。 为了确保每次启动终端时都能加载 Rust 环境变量,我们需要将以下内容添加到 .zshrc 文件中。在终端中执行以下命令: 这将在 .zshrc 文件的末尾添加一行代码

    2024年02月02日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包