雷鋒網按:本文原作者灰灰,本文原載于作者的GitHub。作者投稿,雷鋒網版權所有。
這個文檔說明了如何在 Mac OS X 上安裝 TensorFlow。
注意:從 1.2 版本開始,在 Mac OS X 上 TensorFlow 不再支持 GPU。
確定如何安裝 TensorFlow
你可以選擇一種方式安裝 TensorFlow,支持下面的幾種選擇:
virtualenv
"本地" pip
Docker
從源代碼安裝,更專業有單獨的文檔記錄
我們建議使用 virtualenv 安裝。virtualenv 是一個和其它 Python 項目開發隔離的虛擬 Python 環境,在同一臺機器上不會干擾也不會被其它程序影響。virtualenv 安裝過程中,你不僅僅安裝了 TensorFlow 還有它的所有依賴包。(事實上這很簡單)要開始使用 TensorFlow,你需要 “啟動” virtualenv 環境。總而言之,virtualenv 提供了一個安全可靠的 TensorFlow 安裝和運行機制。
本地 pip 安裝 TensorFlow 不經過任何容器或者虛擬環境系統直接裝到了系統上,由于本地 pip 安裝沒被關閉,pip 安裝會干擾或者影響系統上其它有 Python 依賴的安裝。而且,如果要通過本地 pip 安裝,你需要禁用系統完整性保護(SIP)。然而,如果你了解 SIP,pip 和 你的 Python 環境,本地 pip 安裝相對容易執行。
Docker可使 TensorFlow 的安裝完全脫離于機器上的其它已存在的包,Docker 容器包括 TensorFlow 和它的所有依賴。注意 Docker 鏡像可能很大(幾百 M)。如果你已將 TensorFlow 集成到使用了 Docker 的大型應用架構中可以選擇 Docker 安裝。
選擇 Anaconda,你可以使用 conda 創建一個虛擬環境,我們建議使用 pip install 命令而不是 coda install 命令安裝 TensorFlow。
注意:coda 包是社區而不是官方支持,也就是說,TensorFlow 團隊既不測試也不維護 conda 包,如果使用風險自己承擔。
使用 virtualenv 安裝
按照以下步驟安裝 TensorFlow:
打開終端(一個 shell),你將在這個終端中執行隨后的步驟
通過以下命令安裝 pip 和 virtualenv:
$ sudo easy_install pip
$ sudo pip install --upgrade virtuale
3. 執行以下任一命令創建虛擬環境:
$ virtualenv --system-site-packages targetDirectory # for Python 2.7
$ virtualenv --system-site-packages -p python3 targetDirectory # for Python 3.n
targetDirectory 因虛擬環境根路徑而異,我們的命令假使 targetDirectory 是 ~/tensorflow,但你可以選擇任一目錄。
4. 執行任一命令激活虛擬環境:
$ source ~/tensorflow/bin/activate ? ? ?# If using bash, sh, ksh, or zsh
$ source ~/tensorflow/bin/activate.csh ?# If using csh or tcs
上面的 source 命令應該將提示符改成了下面這樣:
(tensorFlow)$
5. 如果已經安裝了 pip 8.1 或者更新的版本,執行以下任一命令在激活的虛擬環境中安裝 TensorFlow 及其所有依賴:
$ pip install --upgrade tensorflow ? ? ?# for Python 2.7
$ pip3 install --upgrade tensorflow ? ? # for Python 3.n
如果前面的命令執行成功了,跳過步驟 6;如果失敗了,再執行步驟 6。
6. 可選,如果步驟 5 失敗了(一般是因為你使用了低于 8.1 版本的 pip),執行以下任一命令在激活的虛擬環境中安裝 TensorFlow:
$ pip install --upgrade tfBinaryURL ? # Python 2.7
$ pip3 install --upgrade tfBinaryURL ?# Python 3.n
tfBinaryURL 是 Tensorflow 包的 URL,準確的 tfBinaryURL 值因操作系統和 Python 版本而異,在 [這里](#TensorFlow Python 包 URL) 找到和你系統相關的 tfBinaryURL 值。例如,你要在 Mac OS X 上安裝 Python 2.7 對應的 Tensorflow 版本,在虛擬環境中安裝 Tensorflow 就執行下面的命令:
$ pip3 install --upgrade \
https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.2.1-py2-none-any.whl
如果安裝過程中遇到麻煩,參考常見安裝問題。
下一步
安裝完成后,驗證你的安裝是否工作正常。
注意,每打開一個新的 shell 使用 TensorFlow 都必須激活虛擬環境。如果當前虛擬環境沒有被激活(也就是提示符不是 tensorflow),執行以下任一命令:
$ source ~/tensorflow/bin/activate ? ? ?# bash, sh, ksh, or zsh
$ source ~/tensorflow/bin/activate.csh ?# csh or tcsh
你的提示符變成下面這樣說明 tensorflow 環境已經激活:
(tensorflow)$
當虛擬環境激活后,你可以在這個 shell 中運行 TensorFlow 程序。如果你不再使用 TensorFlow,可以通過下面命令退出環境:
(tensorflow)$ deactivate
提示符將會恢復到默認的(在 PS1 中定義的)。
卸載 TensorFlow
如果你想卸載 TensorFlow,簡單地移除你創建的目錄。例如:
$ rm -r ~/tensorflow
使用本地 pip 安裝
我們已經將 TensorFlow 二進制文件上傳到了 PyPI,因此你可以通過 pip 安裝, REQUIRED_PACKAGES section of setup.py文件列出了 pip 將要安裝或升級的包。
必備: Python
要安裝 TensorFlow,你的系統必須依據安裝了以下任一 Python 版本:
Python 2.7
Python 3.3+
如果你的系統還沒有安裝符合以上版本的 Python,現在安裝。
安裝 Python,你可能需要禁用系統完整性保護(SIP)來獲得從 Mac App Store 外安裝軟件的許可。
必備: pip
Pip安裝和管理 Python 寫的軟件包,如果你要使用本地 pip 安裝,系統上必須安裝下面的任一 pip 版本:
pip, for Python 2.7
pip3, for Python 3.n.
pip 或者 pip3 可能在你安裝 Python 的時候已經安裝了,執行以下任一命令確認系統上是否安裝了 pip 或 pip3:
$ pip -V ?# for Python 2.7
$ pip3 -V # for Python 3.n
我們強烈建議使用 pip 或者 pip3 為 8.1 或者更新的版本安裝 TensorFlow,如果沒有安裝,執行以下任一命令安裝或更新:
$ sudo easy_install --upgrade pip
$ sudo easy_install --upgrade six
安裝 TensorFlow
假設你的 Mac 上已經裝好了必備的程序,按照以下步驟執行:
執行以下任一命令安裝 TensorFlow:
$ pip install tensorflow ? ? ?# Python 2.7; CPU support
$ pip3 install tensorflow ? ? # Python 3.n; CPU support
如果上面的命令執行完成,現在可以驗證你的安裝了。
2. (可選的) 如果步驟 1 失敗了,執行下面的命令安裝最新版本 TensorFlow:
$ sudo pip ?install --upgrade tfBinaryURL ? # Python 2.7
$ sudo pip3 install --upgrade tfBinaryURL ? # Python 3.n
tfBinaryURL 是 Tensorflow 包的 URL,準確的 tfBinaryURL 值因操作系統和 Python 版本而異,在這里找到和你系統相關的 tfBinaryURL 值。例如,你要在 Mac OS X 上安裝 Python 2.7 對應的 Tensorflow 版本,在虛擬環境中安裝 Tensorflow 就執行下面的命令:
$ sudo pip3 install --upgrade \
https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.2.1-py2-none-any.whl
如果以上命令運行失敗,參考 安裝問題。
如果要卸載 TensorFlow,執行下面的命令:
$ pip uninstall tensorflow
$ pip3 uninstall tensorflow
使用 Docker 安裝
按照以下步驟使用 Docker 安裝 TensorFlow:
1. 按照 文檔在你的機器上安裝 Docker
2. 啟動任一個包含 TensorFlow 鏡像的 Docker 容器
本節剩下部分解釋如何啟動 Docker 容器。
要啟動包含 TensorFlow 鏡像的 Docker 容器,執行以下命令:
$ docker run -it -p hostPort:containerPort TensorFlowImage
where:
-p hostPort:containerPort 是可選的,如果你想從 shell 運行 TensorFlow 程序忽略這個選項。如果你想從 Jupyter notebook 運行 TensorFlow 程序,hostPort 和 containerPort 都設置為 8888。如果你想在鏡像中運行 TensorBoard,再添加一個-p參數,hostPort 和 containerPort 都設置為 6006。
TensorFlowImage 是需要的,它用于指定 Docker 容器,你必須指定接下來的任一一個:gcr.io/tensorflow/tensorflow: TensorFlow 二進制鏡像,gcr.io/tensorflow/tensorflow:latest-devel: TensorFlow 二進制鏡像加源碼。
gcr.io 是 Goole 的容器注冊表 (?),注意部分 TensorFlow 也可以從 dockerhub獲取。
例如,下面的命令可以在 Docker 容器中啟動一個 TensorFlow CPU 鏡像,然后你可以在鏡像的 shell 中運行 TensorFlow 程序:
$ docker run -it gcr.io/tensorflow/tensorflow bash
以下命令也可以在 Docker 容器中啟動一個 TensorFlow CPU 鏡像,然而,在這個 Docker 鏡像中,你可以在 Jupyter notebook 中運行 TensorFlow 程序:
$ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow
Docker 將會先下載 TensorFlow 鏡像然后啟動它。
下一步
現在可以驗證你的安裝了。
使用 Anaconda 安裝
Anaconda 安裝只是社區而非官方支持
按照以下步驟在 Anaconda 環境中安裝 TensorFlow:
1. 按照 Anaconda 下載站點說明下載安裝 Anaconda
2. 執行以下命令創建名為 tensorflow 的 conda 環境:
$ conda create -n tensorflow
3. 執行以下命令激活 conda 環境:
$ source activate tensorflow
(tensorflow)$ ?# Your prompt should change
4. 執行以下命令在你的 conda 環境中安裝 TensorFlow:
(tensorflow)$ pip install --ignore-installed --upgrade TF_PYTHON_URL
TF_PYTHON_URL 是 TensorFlow Python 包 的 URL,例如,以下命令是安裝 Python 2.7 CPU-only 版本的 TensorFlow:
(tensorflow)$ pip install --ignore-installed --upgrade \
https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.2.1-py2-none-any.whl
驗證你的安裝
要驗證你的 TensorFlow 安裝,操作以下步驟:
保證你的環境可以運行 TensorFlow 程序
運行一個小的 TensorFlow 程序
準備你的環境
如果你使用本地 pip, virtualenv 或者 Anaconda 安裝,操作以下步驟:
打開一個終端
如果你使用 virtualenv 或 Anaconda 安裝,激活你的容器
如果你安裝了 TensorFlow 源碼,進到任何一個處了包含 TensorFlow 源碼的目錄
如果通過 Docker 安裝,啟動一個運行 bash 的 Docker 容器,例如:
$ docker run -it gcr.io/tensorflow/tensorflow bash
運行一個小的 TensorFlow 程序
在一個 shell 中執行 Python:
$ python
在 python 交互式 shell 中輸入以下小程序:
# Python
import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') sess = tf.Sessionprint(sess.run(hello))
如果系統輸出以下內容,你可以開始寫 TensorFlow 程序了:
Hello, TensorFlow!
如果你不熟悉 TensorFlow,參考 Getting Started with TensorFlow。
如果系統輸出錯誤信息而不是歡迎語,參考 常見安裝問題。
常見安裝問題
我們依據 Stack Overflow 記錄 TensorFlow 安裝問題和相應的解決方法。下面的表格包括 Stack Overflow 常見的安裝問題回復鏈接,如果你遇到的錯誤信息或者其它安裝問題不在表格中,請在 Stack Overflow 上搜索。如果 Stack Overflow 上沒有你搜索的錯誤信息,提一個新問題并且打上 tensorflow 標簽。
Stack Overflow Link | Error Message |
---|---|
42006320 | ImportError: Traceback (most recent call last):File “…/tensorflow/core/framework/graph_pb2.py”, line 6, in from google.protobuf import descriptor as _descriptorImportError: cannot import name ‘descriptor’ |
33623453 | IOError: [Errno 2] No such file or directory: ‘/tmp/pip-o6Tpui-build/setup.py’ |
35190574 | SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed |
42009190 | Installing collected packages: setuptools, protobuf, wheel, numpy, tensorflow Found existing installation: setuptools 1.1.6 Uninstalling setuptools-1.1.6: Exception: … [Errno 1] Operation not permitted: ‘/tmp/pip-a1DXRT-uninstall/…/lib/python/_markerlib’ |
33622019 | ImportError: No module named copyreg |
37810228 | During a pip install operation, the system returns:OSError: [Errno 1] Operation not permitted |
33622842 | An import tensorflow statement triggers an error such as the following:Traceback (most recent call last): File “”, line 1, in File “/usr/local/lib/python2.7/site-packages/tensorflow/init.py”, line 4, in from tensorflow.python import * … File “/usr/local/lib/python2.7/site-packages/tensorflow/core/framework/tensorshapepb2.py”, line 22, in serialized_pb=_b(‘\n,tensorflow/core/framework/tensor_shape.proto\x12\ntensorflow\”d\n\x10TensorShapeProto\x12-\n\x03\x64im\x18\x02 \x03(\x0b\x32 .tensorflow.TensorShapeProto.Dim\x1a!\n\x03\x44im\x12\x0c\n\x04size\x18\x01 \x01(\x03\x12\x0c\n\x04name\x18\x02 \x01(\tb\x06proto3’) TypeError: __init got an unexpected keyword argument ‘syntax’ |
42075397 | A pip install command triggers the following error:…You have not agreed to the Xcode license agreements, please run’xcodebuild -license’ (for user-level acceptance) or’sudo xcodebuild -license’ (for system-wide acceptance) from within aTerminal window to review and agree to the Xcode license agreements…. File “numpy/core/setup.py”, line 653, in get_mathlib_info raise RuntimeError(“Broken toolchain: cannot link a simple C program”)RuntimeError: Broken toolchain: cannot link a simple C program |
TensorFlow Python 包 URL
一些安裝方法需要 TensorFlow Python 包的 URL,值與三個方面有關 (?):
操作系統
Python 版本
本節記錄了 Mac OS 安裝相關的值
Python 2.7
https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.2.1-py2-none-any.whl
Python 3.4, 3.5, or 3.6
https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.2.1-py3-none-any.whl
Protobuf pip package 3.1
如果你沒有遇到 protobuf pip 包相關的問題可以跳過本節。
** 注意:** 如果你的 TensorFlow 運行很慢,可能是和 protobuf pip 包有關的問題。
TensorFlow pip 包依賴 protobuf pip 3.1 版本的包,從 PyPI 下載的 protobuf pip 包(在調用 pip install protobuf 時)是一個僅包含 Python 的庫,其中包含執行速度比 C++ 實現慢 10 ~ 50 倍的原始序列化 / 反序列化的 Python 實現。 Protobuf 還支持包含基于快速 C++ 的原語解析的 Python 包的二進制擴展,此擴展在標準的僅 Python 專用 pip 包中不可用,我們為 protobuf 創建了一個包含二進制擴展名的自定義二進制 pip 包。要安裝自定義二進制 protobuf pip 包,請調用以下命令之一:
for Python 2.7:
$ pip install --upgrade \
https://storage.googleapis.com/tensorflow/mac/cpu/protobuf-3.1.0-cp27-none-macosx_10_11_x86_64.whl
for Python 3.n:
$ pip3 install --upgrade \
https://storage.googleapis.com/tensorflow/mac/cpu/protobuf-3.1.0-cp35-none-macosx_10_11_x86_64.whl
安裝這些 protobuf 包將會覆蓋已安裝的包,注意二進制 pip 包已經支持大于 64M 的 protobufs,修復了如下報錯:
[libprotobuf ERROR google/protobuf/src/google/protobuf/io/coded_stream.cc:207]
A protocol message was rejected because it was too big (more than 67108864 bytes).
To increase the limit (or to disable these warnings), seeCodedInputStream::SetTotalBytesLimit in google/protobuf/io/coded_stream.h.
原文:https://www.tensorflow.org/install/install_mac
ZAO 2022中關村在線年度觀察推選年度領先解決方案Leading Solutions 30(以下簡稱LS30),為行業用戶提供更好的選擇,助力行業優質解決方案與技術方案。
中關村在線認為,2022年英特爾推出的Habana Gaudi 2處理器可以參與本次終極評選。Habana Gaudi 2處理器采用了7納米制程工藝,以Habana的高能效架構為基礎,面向數據中心的計算機視覺和自然語言應用,旨在為客戶的模型訓練和推理提供更高的性能。
●對數據中心的意義:助力實現高效AI訓練
現如今,人工智能正從技術概念走向千行百業,實現多場景的實際落地,可以看到的是,人工智能熱潮正推動AI芯片市場不斷煥新。據Allied Market Research報告,全球機器學習芯片市場規模到2025年將達到約378億美元。這不僅驅動著傳統芯片公司戰略和技術的轉型,也推動了大量新玩家入局,在延續性或顛覆性創新方面頻出奇招。
今年英特爾推出的用于高性能深度學習AI訓練的Gaudi處理器,能夠讓客戶以較低成本進行更多訓練。最新發布的Habana Gaudi2是基于Synapse AI軟件棧開發的,能夠通過支持多樣化架構,讓終端用戶充分利用處理器的高性能和高能效。
對于數據中心而言,由于數據集和人工智能業務的規模和復雜性日益增長,訓練深度學習模型所需的時間和成本越來越高,根據IDC的數據,在2020年接受調查的機器學習從業者中,有74%的人對其模型進行過5-10次迭代訓練,超過50%需要每周或更頻繁地重建模型,26%的人則每天甚至每小時會重建模型。56%的受訪者認為培訓成本是阻礙其組織利用人工智能解決問題,創新和增強終端客戶體驗的首要因素。英特爾推出的Habana Gaudi 2處理器采用了7納米制程工藝,并以Habana的高能效架構為基礎,面向數據中心的計算機視覺和自然語言應用,旨在為客戶的模型訓練和推理提供更高的性能。
●技術解析:全方位升級有效提高訓練性能
基于與第一代Gaudi相同的體系架構,Habana Gaudi 2處理器大幅提高了訓練性能。客戶在云端運行Amazon EC2 DL1實例以及本地運行Supermicro Gaudi訓練服務器時,其性價比比現有GPU解決方案提升了40%,這些都來自于Gaudi2在架構上的進步:包括制程工藝從16納米躍升至7納米;在矩陣乘法(MME)和Tensor處理器核心計算引擎中引入了FP8在內的新數據類型;Tensor處理器的核心數量由8個增至24個;芯片上集成多媒體處理引擎,實現從主機子系統的卸載;片內封裝的內存容量提升了3倍,從32GB提升到帶寬2.45TB/秒的96GB HBM2E;兩倍48MB的板載SRAM存儲器以及基于RDMA (RoCE2) 的集成以太網從10個增至24個,在標準網絡上實現高效的縱向和橫向擴展。
從MLPerf行業測試中的表現也可以看出來,Habana Gaudi 2處理器在視覺(ResNet-50)和語言(BERT)模型上相比NVIDIA A100訓練時間上擁有不小的優勢。
相比于第一代Gaudi處理器,Habana Gaudi 2處理器在ResNet-50模型的訓練吞吐量提高了3倍,BERT模型的訓練吞吐量提高了4.7倍。這些歸因于制程工藝從16納米提升至7納米、Tensor處理器內核數量增加了三倍、增加GEMM引擎算力、封裝的高帶寬存儲容量提升了三倍、SRAM帶寬提升以及容量增加一倍。對于視覺處理模型的訓練,Gaudi2處理器集成了媒體處理引擎,能夠獨立完成包括AI訓練所需的數據增強和壓縮圖像的預處理。
兩代Gaudi處理器的性能都是在沒有特殊軟件操作的情況下通過Habana客戶開箱即用的商業軟件棧實現的。
通過商用軟件所提供的開箱即用性能,在Habana 8個GPU服務器與HLS-Gaudi2參考服務器上進行測試比對。其中,訓練吞吐量來自于NGC和Habana公共庫的TensorFlow docker,采用雙方推薦的最佳性能參數在混合精度訓練模式下進行測量。值得注意的是,吞吐量是影響最終訓練時間收斂的關鍵因素。
●行業影響和用戶需求:數據中心按需加速,讓深度學習更“快”
通過將Habana Gaudi 2部署到數據中心,可針對計算機視覺與自然語言處理的模型訓練與推理提供更高效能,并解決客戶最關注的兩個問題:降低服務器處理成本,還能減少訓練模型所需時間。Habana Gaudi2和Greco AI加速器是基于Synapse AI軟件棧開發的,能夠通過支持多樣化架構,讓終端用戶充分利用處理器的高性能和高能效。
同時,借助Habana Labs的Gaudi平臺,數據中心團隊能夠專注于深度學習處理器技術,讓數據科學家和機器學習工程師得以高效地進行模型訓練,并通過簡單的代碼實現新模型構建或現有模型遷移,提高工作效率的同時降低運營成本。
●結語
針對主要為云計算、邊緣計算等需求提供算力的“基礎算力”領域,英特爾發布的第二代Gaudi處理器Habana Gaudi2,在深度學習上實現了重點飛躍,能夠通過支持多樣化架構,讓用戶充分利用處理器的高性能和高能效,以更高的性價比訓練數據中心負載。毫無疑問的是,在服務器或服務器集群主要用于深度學習訓練和推理計算的場景中,Habana Gaudi2是理想的加速器,針對這些專用場景,它能夠提供優異的深度學習性能并降低總體擁有成本。
(8086572)