Tag Archives: TensorFlow

[ 翻譯 ] 2018.12.07- 部署機器學習模型更簡單!!如何使用TensorFlow Serving搭配Docker?

翻譯

宗諭

審閱

阿吉老師

主題圖片

Designed by Freepik

原文作者

Gautam Vasudevan與Abhijit Karmarkar,特此致謝!

說明

感謝TensorFlow團隊,特此致謝!原文請見

 

 

 

Serving machine learning models quickly and easily is one of the key challenges when moving from experimentation into production. Serving machine learning models is the process of taking a trained model and making it available to serve prediction requests. When serving in production, you want to make sure your environment is reproducible, enforces isolation, and is secure. To this end, one of the easiest ways to serve machine learning models is by using TensorFlow Serving with Docker. Docker is a tool that packages software into units called containers that include everything needed to run the software.

當從實驗階段移至生產階段,如何快速、簡單地部署機器學習模型,是其中一項關鍵性挑戰。部署機器學習模型,是取用一個訓練好的模型並使此模型能回應預測請求的過程。當把模型部署至實際生產時,使用者想要確保環境是可重現、獨立且安全的。至此,部署機器學習模型最簡單的方法之一,是使用TensorFlow Serving搭配Docker。什麼是Docker呢?Docker是一項把軟體打包成一個個單元的工具,而這樣的單元被稱作「容器」,它包含了運作該軟體的一切所需。

 

Since the release of TensorFlow Serving 1.8, we’ve been improving our support for Docker. We now provide Docker images for serving and development for both CPU and GPU models. To get a sense of how easy it is to deploy a model using TensorFlow Serving, let’s try putting the ResNet model into production. This model is trained on the ImageNet dataset and takes a JPEG image as input and returns the classification category of the image.

自TensorFlow Serving 1.8發佈以來,我們持續改善對Docker的支援。現在,我們提供了Docker 映像檔,讓使用者可針對CPU與GPU模型進行部署和開發。為讓讀者們了解,運用TensorFlow Serving部署模型到底有多簡單,讓我們試著使ResNet模型進行生產。這個模型是以ImageNet資料集來訓練,以JPEG圖像作為輸入,並會回傳此圖像的分類結果。

 

Our example will assume you’re running Linux, but it should work with little to no modification on macOS or Windows as well.

下面的實例假定您使用Linux,但只需要稍微修改(甚至不用),也能在macOS或Windows上運作。

 

Serving ResNet with TensorFlow Serving and Docker

The first step is to install Docker CE. This will provide you all the tools you need to run and manage Docker containers.

TensorFlow Serving uses the SavedModel format for its ML models. A SavedModel is a language-neutral, recoverable, hermetic serialization format that enables higher-level systems and tools to produce, consume, and transform TensorFlow models. There are several ways to export a SavedModel(including from Keras). For this exercise, we will simply download a pre-trained ResNet SavedModel:

運用TensorFlow Serving與Docker部署ResNet

第一步是安裝Docker CE,它將提供運作並管理Docker容器所需的工具。

針對其下各種機器學習模型,TensorFlow Serving使用SavedModel格式。SavedModel是一種語言中立、可回復、密閉序列化的格式,使高階系統和工具得以產生、運用並轉化TensorFlow模型。匯出SavedModel格式(包括Keras的模型)的方法相當多元,本範例將下載預先訓練好的ResNet SavedModel。

$ mkdir /tmp/resnet
$ curl -s https://storage.googleapis.com/download.tensorflow.org/models/official/20181001_resnet/savedmodels/resnet_v2_fp32_savedmodel_NHWC_jpg.tar.gz | tar --strip-components=2 -C /tmp/resnet -xvz

 

We should now have a folder inside /tmp/resnet that has our model. We can verify this by running:

現在,在/tmp/resnet中有一個資料夾,其中包含了我們的模型。請執行以下指令進行驗證:

$ ls /tmp/resnet
1538687457

 

Now that we have our model, serving it with Docker is as easy as pulling the latest released TensorFlow Serving serving environment image, and pointing it to the model:

有了模型之後,要運用Docker部署模型就簡單了,只要使用pull指令取得最新發佈的TensorFlow Serving的serving environment映像檔,並且將serving environment映像檔指向模型即可:

$ docker pull tensorflow/serving
$ docker run -p 8501:8501 --name tfserving_resnet \
--mount type=bind,source=/tmp/resnet,target=/models/resnet \
-e MODEL_NAME=resnet -t tensorflow/serving &
…
… main.cc:327] Running ModelServer at 0.0.0.0:8500…
… main.cc:337] Exporting HTTP/REST API at:localhost:8501 …

 

Breaking down the command line arguments, we are:

以下介紹各個命令列參數:

  • -p 8501:8501: Publishing the container’s port 8501 (where TF Serving responds to REST API requests) to the host’s port 8501

發佈容器埠8501(TensorFlow Serving在此回應REST API請求)對應到主機埠8501。

 

  • –name tfserving_resnet: Giving the container we are creating the name “tfserving_resnet” so we can refer to it later

幫容器命名為「tfserving_resnet」,後續才能參照到它。

 

  • –mount type=bind,source=/tmp/resnet,target=/models/resnet: Mounting the host’s local directory (/tmp/resnet) on the container (/models/resnet) so TF Serving can read the model from inside the container.

運用mount命令,將主機的本地目錄(/tmp/resnet)掛載至容器上(/models/resnet)。這樣,TensorFlow Serving可從容器內讀取模型。

 

  • -e MODEL_NAME=resnet: Telling TensorFlow Serving to load the model named “resnet”

告訴TensorFlow Serving,載入名稱為「resnet」的模型。

 

  • -t tensorflow/serving: Running a Docker container based on the serving image “tensorflow/serving”

根據部署映像檔「tensorflow/serving」來運作Docker容器。

 

Next, let’s download the python client script, which will send the served model images and get back predictions. We will also measure server response times.

接著,讓我們下載python客戶端腳本,這個腳本將傳送部署模型的映像檔,並且取回預測結果。我們也將ˋ計算伺服器的回應時間。

$ curl -o /tmp/resnet/resnet_client.py https://raw.githubusercontent.com/tensorflow/serving/master/tensorflow_serving/example/resnet_client.py

 

This script will download an image of a cat and send it to the server repeatedly while measuring response times, as seen in the main loop of the script:

這個腳本將下載一張貓咪的圖像,並且重複傳送這張圖像至伺服器並計算回應時間,如腳本中的主迴圈所示:

# The server URL specifies the endpoint of your server running the ResNet
# model with the name "resnet" and using the predict interface.
SERVER_URL = 'http://localhost:8501/v1/models/resnet:predict'

...

# Send few actual requests and time average latency.                                                                                                                                                                   
total_time = 0
num_requests = 10
for _ in xrange(num_requests):
    response = requests.post(SERVER_URL, data=predict_request)
response.raise_for_status()
total_time += response.elapsed.total_seconds()
prediction = response.json()['predictions'][0]

print('Prediction class: {}, avg latency: {} ms'.format(
prediction['classes'], (total_time*1000)/num_requests))

 

This script uses the requests module, so you’ll need to install it if you haven’t already. By running this script, you should see output that looks like:

這個腳本使用requests模組,所以如果讀者尚未安裝這個模組,將需要安裝它。執行後應該會看到類似下面的輸出結果:

$ python /tmp/resnet/resnet_client.py
Prediction class: 282, avg latency: 185.644 ms

 

As you can see, bringing up a model using TensorFlow Serving and Docker is pretty straight forward. You can even create your own custom Docker imagethat has your model embedded, for even easier deployment.

從上面的實例可知,運用TensorFlow Serving與Docker部署模型十分直接。讀者甚至可以建置自己的客製Docker映像檔,其中內嵌您的模型,部署起來更加容易。

 

Improving performance by building an optimized serving binary

Now that we have a model being served in Docker, you may have noticed a log message from TensorFlow Serving that looks like:

藉由建置最佳化的部署二元檔來改善效能

既然我們已將模型部署至Docker中,讀者可能已經注意到一則來自TensorFlow Serving的log訊息,如下:

Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA

 

The published Docker images for TensorFlow Serving are intended to work on as many CPU architectures as possible, and so some optimizations are left out to maximize compatibility. If you don’t see this message, your binary is likely already optimized for your CPU.

針對TensorFlow Serving已發佈的Docker映像檔,其目的是盡可能在更多CPU架構上運作,所以會放棄某些最佳化措施來提高相容性。如果您並未看見上述訊息,代表您的二元檔案可能已針對您的CPU進行了最佳化。

 

Depending on the operations your model performs, these optimizations may have a significant effect on your serving performance. Thankfully, putting together your own optimized serving image is straightforward.

取決於您的模型所執行的運算,這些最佳化措施對您模型的部署效能可能有相當顯著的影響。好在,要把最佳化後的部署映像檔組合起來相當簡單。

 

First, we’ll want to build an optimized version of TensorFlow Serving. The easiest way to do this is to build the official Tensorflow Serving development environment Docker image. This has the nice property of automatically generating an optimized TensorFlow Serving binary for the system the image is building on. To distinguish our created images from the official images, we’ll be prepending $USER/ to the image names. Let’s call this development image we’re building $USER/tensorflow-serving-devel:

首先,我們要建置一個TensorFlow Serving經過最佳化的版本。最簡單的方式,是建置官方的TensorFlow Serving開發環境的Docker映像檔。這個映像檔有個很棒的屬性,就是可針對映像檔立基的系統,自動產生一個經過最佳化的TensorFlow二元檔。為區分我們自己建置的映像檔和官方的映像檔,我們將在自己建置的映像檔名稱前加上「$USER/」,讓我們把它命名為「$USER/tensorflow-serving-devel」:

$ docker build -t $USER/tensorflow-serving-devel \
-f Dockerfile.devel \ 
https://github.com/tensorflow/serving.git#:tensorflow_serving/tools/docker

 

Building the TensorFlow Serving development image may take a while, depending on the speed of your machine. Once it’s done, let’s build a new serving image with our optimized binary and call it $USER/tensorflow-serving:

建置自己的TensorFlow Serving開發映像檔根據您的電腦規格可能會花上一段時間。一旦建置完成,就能運用最佳化後的二元檔來建置一個新的部署映像檔,並將它命名為「$USER/tensorflow-serving」:

$ docker build -t $USER/tensorflow-serving \
--build-arg TF_SERVING_BUILD_IMAGE=$USER/tensorflow-serving-devel \ https://github.com/tensorflow/serving.git#:tensorflow_serving/tools/docker

 

Now that we have our new serving image, let’s start the server again:

既然我們已經擁有自己的部署映像檔了,再次啟動伺服器:

$ docker kill tfserving_resnet
$ docker run -p 8501:8501 --name tfserving_resnet \
  --mount type=bind,source=/tmp/resnet,target=/models/resnet \
  -e MODEL_NAME=resnet -t $USER/tensorflow-serving &

 

And finally run our client:

最後,運作前面提到的python客戶端腳本:

$ python /tmp/resnet/resnet_client.py
Prediction class: 282, avg latency: 84.8849 ms

 

On our machine, we saw a speedup of over 100ms (119%) on average per prediction with our native optimized binary. Depending on your machine (and model), you may see different results.

在我們的電腦上運用原生的最佳化二元檔,每次預測的時間平均提升了100ms以上(119%)。不過取決於您的電腦和模型,結果也許不盡相同。

 

Finally, feel free to kill the TensorFlow Serving container:

最後,請用「kill」指令來終止TensorFlow Serving容器:

$ docker kill tfserving_resnet

 

Now that you have TensorFlow Serving running with Docker, you can deploy your machine learning models in containers easily while maximizing ease of deployment and performance.

既然,您已讓TensorFlow Serving與Docker一同運作,自然能輕鬆地部署機器學習模型至容器內,不但能輕鬆部署,效能也能最大化。

 

Please read our Using TensorFlow Serving via Docker documentation for more details, and star our GitHub project to stay up to date.

如果想了解更多細節,請閱讀我們的教學文件,並關注我們的GitHub專案來得到最新訊息。

 

備註:如果想要選購AI人工智慧相關產品,歡迎洽詢機器人王國商城

 

相關文章

 

 

[ 翻譯 ] 2018.12.3- TensorFlow Lite專案分享:Jrobot無人四輪車

翻譯

宗諭

審閱

Joe Chen、CAVEDU教育團隊

專案作者

Joe Chen

感謝作者Joe Chen授權翻譯文字內容,以及播放影片,特此致謝!

主題圖片

Designed by Freepik,特此致謝!

 

Jrobot Self-Drive Powered by TensorFlow Lite

Jrobot無人四輪車的運作核心是TensorFlow Lite。

 

Previously, we used J-control to drive the Jrobot remotely, and this time we get rid of J-control and let Jrobot to do self-drive.

先前,我們運用J-control遠距驅動Jrobot,但這次我們不使用J-control,而讓Jrobot自行駕駛。

 

Jrobot Self Drive is another self-drive experiment based on machine learning, it is not a simulator, it is not a road vehicle, it is a footpath traveler. We built NVIDIA CNN self-drive model using Keras, collected training data, trained the model, and converted the trained model to TensorFlow Lite.

Jrobot無人四輪車是一項建基於機器學習的無人車實驗。Jrobot不是模擬器,也不是道路用車輛,而是一台小型的四輪車。我們運用Keras建構NVIDIA CNN自駕模型,然後收集訓練資料,訓練模型,最後將訓練好的模型轉換至TensorFlow Lite上。

 

TensorFlow Lite allows us to do inference on a mobile device and is the key part of this project. We added TensorFlow Lite to Jrobot Android app. When running, TensorFlow Lite is able to load the trained model, take a camera image as input and give a steering angle as output. Jrobot app runs on an Android phone (Xiaomi Mi5) sitting in the phone box on Jrobot car and control the movement of the Jrobot car through bluetooth connection with Arduino on the car.

運用TensorFlow Lite使我們可以在行動裝置上進行推論,所以TensorFlow Lite可說是這個專案的核心。我們把TensorFlow Lite加至Jrobot Android app中,當運作時,TensorFlow Lite能夠載入訓練好的模型,然後以照相機的圖像作輸入,並給出一個轉向角作輸出。Jrobot app在Android手機上運作,在下面的影片中,我們使用的手機是小米Mi5。當Jrobot準備行駛前,我們把手機放入Jrobot無人四輪車上的手機盒,並透過手機上的藍牙裝置連接四輪車上的Arduino開發板,以控制四輪車的行駛。

 

We did road test in 2 places in the neighborhood and the results show us the trained model works well. Even though it is not full self-drive, it makes human control so much easier, and opens up so many new options, which means there is so much more to do. Thank you!

我們在社區中的兩處地方進行道路測試,結果顯示訓練模型運作的相當好。即便Jrobot目前還不是完全自駕,卻使得人為控制容易許多,並且開啟了許多新選項,這也意味我們還有許多部分需要努力,謝謝。

 

接下來,請讀者們觀賞Jrobot無人四輪車的介紹影片,當中包括了兩次的道路測試(如果讀者想直接看道路測試,第一次道路測試從8:25開始,第二次道路測試從21:30開始):

 

備註:如果想要購買AI人工智慧相關產品,歡迎洽詢機器人王國商城

 

相關文章

 

[ 教學技術文翻譯 ] 如何在 ubuntu 16.04或之後的版本,安裝 Tensorflow ?

作者/攝影

翻譯:宗諭

審閱:阿吉老師

主題圖片:翻攝自ubuntu及TensorFlow網站,特此致謝!

說明

原文請見,感謝TensorFlow團隊授權,特此致謝!

文章分類教學技術文
材料表
  • ubuntu 16.04或之後的版本(64位元)

 

硬體需求:

1.從TensorFlow 1.6開始,執行檔使用AVX指令集,因此在較舊的CPU上,可能無法執行。

2.請先閱讀GPU支援說明,並在ubuntu上設定好能安裝CUDA的GPU。

 

Step1:請在您的系統上先安裝Python開發環境(需使用Python 3.4、3.5或3.6)。

請用以下指令來檢查:

python3 --version
pip3 --version
virtualenv --version

 

如果這些套件都已經安裝好了,請跳過下一步。若沒有安裝好的話,請安裝Pythonpip package managerVirtualenv

sudo apt update
sudo apt install python3-dev python3-pip
sudo pip3 install -U virtualenv  # system-wide install

 

Step2:建立虛擬環境(推薦)

Python virtual environments are used to isolate package installation from the system.

之所以要建立個別的Python虛擬環境,是為了從作業系統隔離不同版本的套件。

 

Create a new virtual environment by choosing a Python interpreter and making a ./venv directory to hold it:

1.藉由選擇一個Python直譯器並產生一個./venv目錄存放它,以建立一個新的虛擬環境。

virtualenv --system-site-packages -p python3 ./venv

 

2.使用shell指令來啟動虛擬環境。

source ./venv/bin/activate  # sh, bash, ksh, or zsh

 

When virtualenv is active, your shell prompt is prefixed with (venv).

3.當虛擬環境被啟動,您電腦上的提示符號的前面會多了一個(venv)。

 

Install packages within a virtual environment without affecting the host system setup. Start by upgrading pip:

4.在虛擬環境中安裝套件,不會影響主機系統的設定。讓我們先升級pip:

pip install --upgrade pip

pip list  # show packages installed within the virtual environment

 

5.如果您已經不需使用TensorFlow,請用以下命令離開虛擬環境:

deactivate  # don't exit until you're done using TensorFlow

 

Step3:安裝TensorFlow pip套件

 Choose one of the following TensorFlow packages to install from PyPI:

因為本文使用的作業系統是ubuntu,所以請根據您的電腦規格,從PyPI來安裝下列其中一個TensorFlow套件:

  • tensorflow– 當前版本,只支援CPU,推薦初學者安裝。
  • tensorflow-gpu– 當前版本,支援GPU(ubuntu和Windows)
  • tf-nightly – nightly版本,只支援CPU,不穩定。
  • tf-nightly-gpu–nightly版本,支援GPU,不穩定(ubuntu和Windows)

 

請在虛擬環境中輸入以下命令來安裝您所要的TensorFlow版本,例如:

pip install --upgrade tensorflow

 

接下來,驗證安裝:

python -c "import tensorflow as tf; tf.enable_eager_execution(); print(tf.reduce_sum(tf.random_normal([1000, 1000])))"

 

如果沒有看到錯誤訊息,就安裝完成了!接下來,讀者可以先閱讀一些教學文件,然後展開對TensorFlow的初體驗。

 

備註:如果想要購買人工智慧相關產品,歡迎洽詢機器人王國商城

 

相關文章

[ 翻譯 ] 2018.11.14- 網友大哉問:迴圈有許多種類型,TensorFlow中的tf.while_loop()是屬於哪一種呢?

翻譯

宗諭

審閱

阿吉老師

主題圖片

Designed by Starline

資料來源

TensorFlow官方論壇

 

Hello!讀者們好!又到我們的「網友大哉問」了。今天提出問題的網友是weich,他的問題是:

 

I have a question about tf.while_loop(). Is this sequential loop or parallel loop.

我有一個關於tf.while_loop()的問題。tf.while_loop()是循序迴圈(Sequential Loop),或是平行迴圈(Parallel Loop)?

 

Take the example from tensorflow document. Since the current iteration depends on the last iteration through the `i` in the code. I am wondering if the loop body executes one by one as a pure sequential loop?

以TensorFlow文件中的程式為例,既然現在正在執行的迭代是根據上一個迭代,也就是透過程式碼中的「i」,我好奇的是,是否迴圈主體是一行程式接著一行程式執行呢?如同存粹地循序迴圈?

 

(weich提到的程式碼)

i = tf.constant(0)
c = lambda i: tf.less(i, 10)
b = lambda i: tf.add(i, 1)
r = tf.while_loop(c, b, [i])

 

約莫兩天後,另外一位網友zhenhailiu回覆了:

 

Two op instances from different iterations can be computed simultaneously, as long as there is no direct or indirect data dependency or control dependency between them. The iterations in this while_loop can be paralleled. In some cases, iterations in a while_loop cannot be paralleled, typically when there are multiple iteration variable.

來自不同迭代的兩個實例(Instance)可以同時進行運算,只要它們之間沒有直接或間接的資料依賴關係,或控制依賴關係。而在這個tf.while_loop()中的迭代,可以是平行的。但在一些情況下,在while_loop()中的迭代,不可以是平行的。一般來說,當while_loop()中有多個迭代變數時,while_loop()中的迭代便不可以是平行的。

 

讀者們覺得這樣的回覆如何呢?歡迎留下您們的意見或想法,謝謝。

 

備註:如果想要購買AI人工智慧相關產品,請洽機器人王國商城,謝謝。

 

相關文章

[ 翻譯 ] 2018.10.24-網友大哉問:TensorFlow 2.0的硬體需求是什麼?

翻譯、改寫

宗諭

審閱

阿吉老師

主題圖片

Designed by Creativeart 

說明取材自TensorFlow論壇內,網友的提問和回覆,特此感謝授權!

 

在之前我們團隊翻譯的文章中,有提到TensorFlow 2.0將於今年下半年發佈。最近看到TensorFlow的官方論壇中有一位網友Thomas提問:「我考慮入手一個NVIDIA GPU,所以,想知道TensorFlow 2.0的硬體需求?」

 

There will be no change over time we will drop support for compute capabilities as NVIDIA drops support as CUDA versions increase.  It all as to do with budget.  GTX 1080TIs are pretty great cards with a nice amount of memory.  The RTX cards look cool but I have not purchased one for any type of testing yet.  Many of us still use GTX 1080 (non ti) cards and some of us use the Titan V ($3K+taxes) and some Titan XP.  I have not seen performance numbers from the RTX cards but I suspect they may match the Titan V.  Our workstations are very behind on device drivers so we have to watch out for that as well.

 

隔了不久,TensorFlow團隊的Toby大大便有以下回覆:

「由於NVIDIA不再支援後續版本的CUDA,我們也一樣不再支援其運算能力。您提出的問題主要和預算有關,GTX 1080TIs是相當棒的顯示卡,記憶體也很夠。RTX顯示卡應該也很棒,但我尚未購買過任何一款RTX顯示卡進行測試。許多團隊成員應該還在使用GTX 1080顯示卡(不是GTX 1080TI),一部分成員使用Titan V(費用約3000美金加上稅金),另外一些成員使用Titan XP。我還沒瀏覽過RTX顯示卡的效能評比,但我猜RTX顯示卡的效能應該和Titan V差不多。我們的工作站的驅動程式有點舊,所以這方面還要多注意一下。」

 

Since you went into the specifics of cards, it seems to me that the RTX 2080 Ti is a great choice, even *better than some Teslas. The only spec that is dramatically worse compared to Teslas is the memory bus width, from a quick look at this monster table. It seems to me that a beefy computer with a few RTXs should be enough even for a small ML team. Also, I feel like Titan is a bit of an overstretch, unless I am missing out on important Volta/Turing architecture differences.

 

過了一陣子,Thomas回覆道:

「既然您提到了顯示卡的規格,對我來說RTX 2080 Ti是個很棒的選擇,甚至比一些Tesla GPU更棒!相較於Tesla GPU,唯一明顯較差的硬體規格是記憶體匯流排寬度。對我來說,一台搭載了幾張RTX顯示卡的運算能力強大的電腦對於小型的機器學習團隊應該很夠用了。此外,我覺得,TITAN系列顯示卡的效能有點誇大,除非我忽略掉一些Volta/Turing架構上的差異。」

 

以上是一些關於TensorFlow 2.0硬體需求與硬體規格的討論,盼望對讀者們有幫助。日後若有關於TensorFlow重要的討論,我們會試著幫大家摘錄。

 

備註:如果您想要購買AI人工智慧相關的產品或教具,歡迎洽詢機器人王國商城。

 

相關文章

[ 翻譯 ] 2018.10.12-根據TensorFlow團隊,TensorFlow將於2020年1月起,停止支援Python 2

原文作者

TensorFlow團隊

圖片

截圖自https://python3statement.org/

網站,特此致謝!

翻譯宗諭審閱鈺莨
說明

感謝TensorFlow團隊的授權翻譯,特此致謝!

 

以下公告由Martin代表TensorFlow團隊發佈:

 

程式語言Python的開發者們,將於2020年1月1日停止支援Python 2.7(詳見此文)。

 

因此,TensorFlow專案也將停止支援Python 2,當Python 2的上游支援終止於2020年。在2020年1月1日後,團隊針對TensorFlow所有原始碼的改變,將不再需要相容於Python 2。總之,TensorFlow可能自2020年起,不再適用於Python 2。

 

這樣的改變將可簡化我們的程式碼,並且可使用Python 3.x標準函式中的新功能。

 

備註:如果您想購買AI人工智慧相關產品,歡迎洽詢機器人王國商城,謝謝。

 

相關文章

[ 翻譯 ] 2018.10.09- TensorFlow團隊發佈最新的TensorFlow模型最佳化工具包,一起來看看!

原文作者

TensorFlow團隊

圖片TensorFlow團隊提供

主題圖片:Designed by Freepik

翻譯宗諭審閱阿吉老師
說明

感謝TensorFlow團隊的授權翻譯,特此致謝!原文請見這裡

 

We are excited to introduce a new optimization toolkit in TensorFlow: a suite of techniques that developers, both novice and advanced, can use to optimize machine learning models for deployment and execution.

我們很高興向大家介紹:新的TensorFlow最佳化工具包,它包含了一整套的技術,不論您是入門或進階開發者都可運用這套工具包來最佳化機器學習模型的部署與執行。

 

While we expect that these techniques will be useful for optimizing any TensorFlow model for deployment, they are particularly important for TensorFlow Lite developers who are serving models on devices with tight memory, power constraints, and storage limitations. If you haven’t tried out TensorFlow Lite yet, you can find out more about it here.

我們期待這個工具包對於部署任何TensorFlow模型,都能做到最佳化,然而,這個工具包對TensorFlow Lite的開發者來說尤其重要!因為,TensorFlow Lite的開發者需要在裝置上運作模型,這些裝置不論在記憶體、電源與儲存容量上都更為吃緊。如果您尚未試用過TensorFlow Lite,可在這裡了解更多相關資訊。

 

The first technique that we are adding support for is post-training quantization to the TensorFlow Lite conversion tool. This can result in up to 4x compression and up to 3x faster execution for relevant machine learning models.

這個工具包加入的第一項技術是針對TensorFlow Lite轉換工具的訓練後量化(post-training quantization)功能。針對相關的機器學習模型,這項技術最高可達到4倍的壓縮率,並使執行速度最高加快3倍。

 

By quantizing their models, developers will also gain the additional benefit of reduced power consumption. This can be useful for deployment in edge devices, beyond mobile phones.

藉由量化模型,開發者也將因電源功耗減少而得到額外益處。這有助於部署模型在非手機範圍的邊緣裝置上。

 

Enabling post-training quantization

The post-training quantization technique is integrated into the TensorFlow Lite conversion tool. Getting started is easy: after building their TensorFlow model, developers can simply enable the ‘post_training_quantize’ flag in the TensorFlow Lite conversion tool. Assuming that the saved model is stored in saved_model_dir, the quantized tflite flatbuffer can be generated:

啟用訓練後量化

訓練後量化技術已被整合至TensorFlow Lite轉換工具中。如何開始使用呢?很簡單!在建立TensorFlow模型後,開發者只要在TensorFlow Lite轉換工具中啟用「post_training_quantize」旗標就可以了。假設我們把模型放在saved_model_dir 這個資料夾中,就能產生量化後的「tflite flatbuffer」:

converter=tf.contrib.lite.TocoConverter.from_saved_model(saved_model_dir)
converter.post_training_quantize=True
tflite_quantized_model=converter.convert()
open(“quantized_model.tflite”, “wb”).write(tflite_quantized_model)

 

Our tutorial walks you through how to do this in depth. In the future, we aim to incorporate this technique into general TensorFlow tooling as well, so that it can be used for deployment on platforms not currently supported by TensorFlow Lite.

我們的教學文件會詳細告訴您關於「訓練後量化」這項技術。未來,我們希望把這項技術也納入一般TensorFlow工具中,使它能部署於一些目前TensorFlow Lite尚未支援的平台上。

 

Benefits of post-training quantization

  • 4x reduction in model sizes

  • Models, which consist primarily of convolutional layers, get 10–50% faster execution

  • RNN-based models get up to 3x speed-up

  • Due to reduced memory and computation requirements, we expect that most models will also have lower power consumption

「訓練後量化」的效益:

  • 模型大小最高可減少4倍

  • 主要由卷積層所組成的模型,執行速度可加快10%-50%。

  • 以遞迴神經網路RNN為基礎的模型,最高可加速3倍。

  • 由於減低記憶體和低運算的要求日增,我們期待大多數的模型也能做到低功耗。

 

See graphs below for model size reduction and execution time speed-ups for a few models (measurements done on Android Pixel 2 phone using a single core).

關於降低模型大小與提高執行速度,請參考下面幾張圖表(使用Android Pixel 2 單核心手機)。

圖1 Model Size Comparison: Optimized models are almost 4x smaller 模型大小比較:最佳化後,模型大小幾乎小了4倍。

 

圖2 Latency Comparison: Optimized models are 1.2 to 1.4x faster 延遲比較:經過最佳化的模型加速1.2至1.4倍。

 

These speed-ups and model size reductions occur with little impact to accuracy. In general, models that are already small for the task at hand (for example, mobilenet v1 for image classification) may experience more accuracy loss. For many of these models we provide pre-trained fully-quantized models.

執行加速及降低模型大小對準確性影響不大。總體來說,原本就輕量化、專門針對行動裝置任務的模型(例如用於影像分類的mobilenet v1),準確性可能會損失較多。針對前述這些模型,我們提供預先訓練好的全量化模型

圖3 Accuracy Comparison: Optimized models show negligible accuracy drop, except for mobilenets. 準確性比較:除了mobilenets外,其它最佳化後的模型,準確性幾乎沒有降低。

 

We expect to continue improving our results in the future, so please see the model optimization guide for the latest measurements.

我們未來會繼續改良。關於最新的量測結果請參考模型優化教學。

 

How post-training quantization works

Under the hood, we are running optimizations (otherwise referred to as quantization) by lowering the precision of the parameters (i.e. neural network weights) from their training-time 32-bit floating-point representations into much smaller and efficient 8-bit integer ones. See the post-training quantization guide for more details.

「訓練後量化」如何運作?

我們運作最佳化(又稱為量化)的方式,是藉由降低參數的精確性(例如,神經網路權重),使參數的模型訓練時間,從32位元浮點表示法降低為更小也更有效率的8位元整數。如果讀者想更深入了解,請參考「訓練後量化」教學。

 

These optimizations will make sure to pair the reduced-precision operation definitions in the resulting model with kernel implementations that use a mix of fixed- and floating-point math. This will execute the heaviest computations fast in lower precision, but the most sensitive ones with higher precision, thus typically resulting in little to no final accuracy losses for the task, yet a significant speed-up over pure floating-point execution. For operations where there isn’t a matching “hybrid” kernel, or where the Toolkit deems it necessary, it will reconvert the parameters to the higher floating point precision for execution. Please see the post-training quantization page for a list of supported hybrid operations.

這樣的最佳化,將確保在結果模型中精確性降低後的操作定義能符合內核實作,後者在實作混用了定點和浮點數學。這樣可在精確度較低的情況下做到最多的運算,但其中最敏感且精確性較高的模型,通常不會 (或僅微量)因此導致精確度降低,反之如果是純浮點數執行的話,執行速度則有顯著提升。針對非「混合型」內核的運算,或工具包認為有必要,「訓練後量化」會再將參數轉換為較高精度的浮點數。關於「訓練後量化」支援哪些混合運算,請參考「訓練後量化」網頁。

 

Future work

We will continue to improve post-training quantization as well as work on other techniques which make it easier to optimize models. These will be integrated into relevant TensorFlow workflows to make them easy to use.

未來改進

我們將持續改善「訓練後量化」技術,以及其它模型最佳化技術。而這些技術將被整合至相關的TensorFlow工作流程,使大家能夠更方便使用。

 

Post-training quantization is the first offering under the umbrella of the optimization toolkit that we are developing. We look forward to getting developer feedback on it.

這套還在開發中的最佳化工具包中,「訓練後量化」是我們推出的第一項技術。期待收到大家的回饋。

 

Please file issues at GitHub and ask questions at Stack Overflow.

 

請在GitHub提出你們的建議,並請在Stack Overflow詢問問題。

 

備註:若您想購買AI人工智慧相關產品,歡迎洽詢機器人王國商城

 

相關文章

[ AI人工智慧-神經運算 ] 淺談人工智慧實作,開源工具Tensorflow與安裝(Windows篇)

大家在網路、報章雜誌上是不是很常聽到AI人工智慧呢?2018年許多人在研究、開發AI的神經網路運算,您聽過神經網路運算嗎?今天與讀者們快速分享一些AI、神經網路運算資訊,以及我們設計人工神經網路實作課程時,在Windows系統上使用的一些工具。

作者/攝影

CAVEDU教育團隊 徐豐智

文章分類教學技術文
時間30分鐘
成本電腦
難度

**

材料表Window 10 作業系統

說到人工智慧,相關技術的人會想到機器視覺、自然語言⋯⋯等等專有名詞,今天與讀者們分享的AI課程,是神經網路運算的相關實作。

 

Google的Deepmind團隊使用了Alpha GO 挑戰世界棋王獲勝的事,大家還記得嗎?(快速回憶AlphaGO-連結,這項成果該團隊使用的是神經網路運算技術,工具是Tensorflow。Gmail的垃圾郵件判讀、Google相簿臉部識別、Google翻譯,Google在Tensorflow上以Opensource的方式開放出來,大家可按照自己想做的AI案例收集樣本資料,訓練AI判斷的模型。

 

今年九月起,CAVEDU教育團隊與微軟合作設計AI課程(微軟技術中心上機實作課程-人工智慧實務工作坊:故事連結基於這次經驗,與大家分享如何在Windows作業系統下,安裝AI相關工具套件。我們先介紹現在的AI實作上的一些分類,接著是Tensorflow與keras、Opencv等環境安裝教學。

 

淺談人工智慧實作

首先,有幾種與運算效能不強的硬體整合的AI方式(想直接安裝Tensorflow,可跳過這一段)。

 

一、使用物聯網將判斷交給雲端處理,並將處理結果回傳

終端裝置(樹莓派、Linkit7688⋯⋯)負責收集影像、語音資料,將這些影像、語音資料上傳至雲端AI(Google、Azure、IBM bluemix⋯⋯等),雲端AI判斷後,將判斷結果回傳至終端裝置,終端裝置再進行動作。

 

A、微軟認知服務,解析人的年齡、性別、情緒實作教學連結

 

B、Google語音助理的服務,將聲音上傳到Google,交由雲端處理(實作教學連結、影片連結)

 

C、IBM Bluemix服務做TJBOT聊天機器人(實作教學連結)

 

二、使用Opensouce的工具,建立自己的AI專案,訓練AI

建立判斷AI的工具,透過AI工具提供的演算法和判斷方法,收集相關資料(比如說,透過圖片判斷動物園的動物種類),訓練AI,提高AI的的推理能力(從可分別猩猩和大象的差別,提升至可分別猩猩和獼猴的差別)。

 

A、Tensorflow與keras的機器學習工具(相關文章連結)

 

B、Caffe的機器學習工具(相關文章連結)

 

三、邊緣運算、智慧邊緣:

結合訓練的AI,將運算交給終端裝置(手機、樹梅派⋯⋯等等),解決將資料傳給雲端,再回傳資料導致的延遲。(比如說,汽車上的AI,如果因網路不順,導致判斷過慢發生車禍等意外;又或者在製造業使用的機器手臂,判斷過慢導致產線的良率不穩。)

 

A、Nvidia的GPU顯示卡,幫助電腦運算

 

B、Intel的低功耗加速AI推理的運算棒(相關文章連結)

 

在Windows上安裝TensorFlow的環境

我們要開在Windows作業系統上安裝Tensorflow的教學。請將安裝的電腦,額外預留5GB的硬碟容量以安裝相關軟體。

 

安裝順序:

一、安裝Anaconda環境

二、建立獨立的Anacoonda(Python)虛擬環境

三、安裝TensorFlow 、 Keras、Opencv

四、執行手寫辨識範例

 

一、安裝Anaconda環境

對AI初學者來說,安裝TensorFlow環境、使用的套件雜亂,相互不匹配,是第一道難關。但Anaconda可將這件事變得很單純,因為Anaconda除了支援Windows,也支援Mac、Linux作業系統。之後有空,再跟大家分享在Windows App上安裝ubuntu作業系統。

 

請先至Anaconda網站上下載軟體,點選下圖左邊的Windows選項

https://www.anaconda.com/download/

圖1

 

選擇下載的安裝環境,有Python3、2兩種版本。因為許多的AI範例使用Python3,建議使用Python 3。並依照電腦規格,選擇64位元 / 32位元的版本下載。

圖2

 

點選下載的檔案,開始安裝,點選下一步、同意。

圖3

 

圖4

 

選擇是否只安裝在這一個Windows的帳號

圖5

 

決定安裝路徑。因為之後會訓練資料,請讀者們盡量選擇讀寫速度較快的硬碟。

圖6

 

點選加入Windows的環境變數(可不選,能讓Windows的CMD視窗也可以呼叫Anaconda),預設使用Python3.6。

圖7

 

安裝完成後,在開始的列表會出現Anaconda的相關工具。

圖8

 

二、建立獨立的Anacoonda(Python)虛擬環境

Python有許多相依的套件,建議讀者們在做不一樣的Python套件實測試時,可重新建立新的環境,每個新的環境會依照名稱顯示。

 

下圖是我建立兩個環境,分別命名為testlesson1、testtensorflow。

圖9

 

首先,在本機磁碟(C),新增一個資料夾[testAI],以便管理環境中的檔案,點選[Anaconda Prompt]。

圖10

 

圖11

 

指令:移動至資料夾[testAI]

>cd \testAI
圖12

 

指令:建立Anaconda環境

>conda create --name testAI python=3.6 anaconda

 

指令功能:

conda create:建立虛擬環境

-name testAI:環境名稱,取名為testAI

python=3.6:Python的版本為3.6

anaconda:建立環境時,會把Python相關的套件也一起安裝,例如:NumPy、SciPy等常用的套件,也有Jupyter Notebook。

圖13

 

Anaconda會詢問你該虛擬環境是否安裝這些套件,輸入指令y

>y
圖14

 

圖15

 

安裝完成後,您可以用下列兩個指令開啟 / 關閉虛擬環境:

>conda activate testAI

>conda deactivate
圖16

 

若成功開啟虛擬環境,命令列最左方的顯示會由(base)改為(testAI)。

圖17

 

三、安裝TensorFlow 、 Keras、Opencv

接著,我們要安裝一些訓練AI模型的套件,這些都是python相關的套件,您可以用pip安裝,也可以用conda安裝。

 

安裝Python的Tensorflow套件:

>conda install tensorflow
圖18

 

圖19

 

安裝Python的keras套件:

>conda install keras
圖20

 

圖21

 

安裝Python的opencv套件:

>conda install opencv
圖22

 

圖23

 

套件安裝的差不多了。如果您有想要訓練的資料集、執行的程式,可以放在資料夾[testAI]裡。

圖24

 

接著移動至指定的資料夾:

cd ./ms-agv-car-master/keras_source

 

回到上一層資料夾:

cd ..

 

指令功能:

cd .\ai-car\keras_source:移動資料夾到ai-car\keras_source

cd .. :回到上一層資料夾

五、執行手寫辨識範例

最後,我們執行一個訓練資料的手寫辨識範例,確認Tensorflow系統環境都沒有問題。

(資源來自keras中文文檔https://keras-cn.readthedocs.io/en/latest/

 

首先,安裝git套件。

>conda install git
圖26

 

圖27

 

接下來:

1、透過git下載keras的範例

git clone https://github.com/fchollet/keras.git

 

2、移動到範例資料夾

> cd ./keras/examples/

 

3、執行手寫辨識訓練資料,若執行未出現錯誤,恭喜您已安裝成功,可不用等待程式執行完畢,[Ctrl+C]直接跳出訓練畫面

> python mnist_mlp.py
圖28

 

今天的分享至此結束。盼望這篇文章能給讀者們一些幫助,下次見!

 

相關文章

[ 翻譯 ] 2018.08.03-根據TensorFlow團隊,TensorFlow 1.9正式支援樹莓派

原文作者

Pete Warden

圖片

CAVEDU教育團隊

翻譯宗諭審閱吉弘
說明

感謝作者Pete Warden的授權翻譯,特此致謝!

When TensorFlow was first launched in 2015, we wanted it to be an “open source machine learning framework for everyone”. To do that, we need to run on as many of the platforms that people are using as possible. We’ve long supported Linux, MacOS, Windows, iOS, and Android, but despite the heroic efforts of many contributors, running TensorFlow on a Raspberry Pi has involved a lot of work. Thanks to a collaboration with the Raspberry Pi Foundation, we’re now happy to say that the latest 1.9 release of TensorFlow can be installed from pre-built binaries using Python’s pip package system! If you’re running Raspbian 9 (stretch), you can install it by running these two commands from a terminal:

當TensorFlow於2015年首次發佈時,我們希望它是一個「給所有人的開源機器學習框架」。爲要達成這一點,我們需要盡可能讓它在更多人們使用的平台上運作,所以,我們長期以來支援了Linux、MacOS、Windows、iOS及Android等作業系統。然而,儘管許多貢獻者已經貢獻卓越,在Raspberry Pi上運行TensorFlow仍有許多工作需要完成。感謝與Raspberry Pi基金會的合作,我們現在很高興能宣佈:最新的TensorFlow 1.9版,可透過Python的pip套件系統來安裝建置好的二元檔了!若您正使用Raspbian 9(Raspbian stretch),只要從終端機輸入下面這兩道指令來安裝它:

 

sudo apt install libatlas-base-dev
pip3 install tensorflow

 

You can then run python3 in a terminal, and use TensorFlow just as you would on any other platform. Here’s a simple hello world example:

接下來,您可在終端機上運作python3,並如同在任何其它平台上一樣使用TensorFlow。下面是一個簡單的hello world範例:

 

# Python
import tensorflow as tf
tf.enable_eager_execution()
hello = tf.constant(‘Hello, TensorFlow!’)
print(hello)

 

If the system outputs the following, then you are ready to begin writing TensorFlow programs:

Hello, TensorFlow!

如果看到以下內容:Hello, TensorFlow!, 那您便可開始編寫TensorFlow的程式。

 

There are more details on installing and troubleshooting TensorFlow on the Raspberry Pi on the TensorFlow website.

更多細節,請參考TensorFlow官網上的內容

 

We’re excited about this because the Raspberry Pi is used by many innovative developers, and is also widely used in education to introduce people to programming, so making TensorFlow easier to install will help open up machine learning to new audiences. We’ve already seen platforms like DonkeyCar use TensorFlow and the Raspberry Pi to create self-driving toy cars, and we can’t wait to discover what new projects will be built now that we’ve reduced the difficulty.

我們對這件事感到很興奮,因為Raspberry Pi早已被許多創新開發者使用著,也被廣泛應用於教育領域來推廣程式教育。所以,讓TensorFlow更容易安裝於Raspberry Pi上,將有助於新朋友認識何謂機器學習。我們已經看到像 DonkeyCar 這樣的平台使用TensorFlow與Raspberry Pi來做出能夠自動駕駛的玩具小車。我們也迫不及待想知道,在使用難度降低之後,會有哪些新專案誕生。

 

Eben Upton, founder of the Raspberry Pi project, says, “It is vital that a modern computing education covers both fundamentals and forward-looking topics. With this in mind, we’re very excited to be working with Google to bring TensorFlow machine learning to the Raspberry Pi platform. We’re looking forward to seeing what fun applications kids (of all ages) create with it,” and we agree!

Raspberry Pi創辦人Eben Upton表示:「現今的電腦程式教育必須涵蓋基礎知識與前瞻性的主題。考慮到這一點,我們非常興奮能與Google合作,將TensorFlow機器學習引入Raspberry Pi平台。我們期待看見所有年齡層的孩子們能運用它來打造各種有趣的應用。」這,我們完全同意!

 

We’re hoping to see a lot more educational material and tutorials emerge that will help more and more people explore the possibilities of machine learning on such a cost-effective and flexible device.

我們深切盼望看見更多教材和教學資源問世,幫助更多人在Raspberry Pi這款高CP值又具備擴充彈性的裝置上探索機器學習的各種可能性。

 

備註:若您想要購買樹莓派,可以前往機器人王國商城,謝謝。

 

相關文章

[翻譯] 2018.8.14-根據TensorFlow團隊,TensorFlow 2.0預覽版預計於下半年發佈(繁、簡中文版)

原文作者

Martin Wicke

發佈時間

原文發佈日期:2018年8月14日

翻譯宗諭審閱吉弘
說明

轉載自TensorFlow團隊社群內的公開公告,非常感謝TensorFlow團隊的授權翻譯,特此致謝!

Since the open-source release in 2015, TensorFlow has become the world’s most widely adopted machine learning framework, catering to users and use-cases. In this time, TensorFlow has evolved along with rapid developments in computing hardware, machine learning research, and commercial deployment.

 

自從TensorFlow於2015年以開放原始碼形式發佈後,已成為全球最廣為採用的機器學習框架,提供給廣泛的使用者及案例。時至今日,TensorFlow也隨著運算硬體、機器學習研究及商用部署的快速發展而不斷進化。

 

自从TensorFlow于2015年以开放原始码形式发布后,已成为全球最广为采用的机器学习框架,提供给广泛的使用者及案例。时至今日,TensorFlow也随着运算硬体、机器学习研究及商用部署的快速发展而不断进化。

 

Reflecting these rapid changes, we have started work on the next major version of TensorFlow. TensorFlow 2.0 will be a major milestone, with a focus on ease of use. Here are some highlights of what users can expect with TensorFlow 2.0:

  • Eager execution will be a central feature of 2.0. It aligns users’ expectations about the programming model better with TensorFlow practice and should make TensorFlow easier to learn and apply.
  • Support for more platforms and languages, and improved compatibility and parity between these components via standardization on exchange formats and alignment of APIs.
  • We will remove deprecated APIs and reduce the amount of duplication, which has caused confusion for users.

 

爲回應這股快速變遷的趨勢,我們(TensorFlow團隊)已開始研發TensorFlow下一個主要版本。TensorFlow 2.0將會是重要的里程碑,著眼於讓大家更容易使用。以下是一些使用者可期盼的焦點:

  • Eager execution將會是0版本的中心特色,它能滿足使用者對於實做更棒的程式模型的期待,並且應該會使TensorFlow更易於學習及應用。
  • 支援更多的平台及語言,亦改善了相容性,並且透過交換格式及API調整的標準化,在這些元件中取得平衡。
  • 我們將會移除已棄用的API,並且降低重複性,避免造成使用者混淆。

 

为回应这股快速变迁的趋势,我们(TensorFlow团队)已开始研发TensorFlow下一个主要版本。 TensorFlow 2.0将会是重要的里程碑,着眼于让大家更容易使用。以下是一些使用者可期盼的焦点:

  • Eager execution将会是0版本的中心特色,它能满足使用者对于实做更棒的程式模型的期待,并且应该会使TensorFlow更易于学习及应用。
  • 支援更多的平台及语言,亦改善了相容性,并且透过交换格式及API调整的标准化,在这些元件中取得平衡。
  • 我们将会移除已弃用的API,并且降低重复性,避免造成使用者混淆。

 

We are planning to release a preview version of TensorFlow 2.0 later this year.

 

我們預計於2018年下半年發佈TensorFlow 2.0的預覽版本。

 

我们预计于2018年下半年发布TensorFlow 2.0的预览版本。

 

Public 2.0 design process

Shortly, we will hold a series of public design reviews covering the planned changes. This process will clarify the features that will be part of TensorFlow 2.0, and allow the community to propose changes and voice concerns. Please join developers@tensorflow.org if you would like to see announcements of reviews and updates on process. We hope to gather user feedback on the planned changes once we release a preview version later this year.

 

公開的 TensorFlow 2.0設計程序

簡而言之,我們將針對已在計劃中的更新有一系列的「公開設計評論」。這個過程會說明那些即將納入TensorFlow 2.0中的功能,並且允許社群提出修改且表達關切。若您想得知評論的公告與設計過程的進展,請加入developers@tensorflow.org。一旦預覽版本於2018年下半年發佈之後,我們期盼收到使用者對於計畫中的更新的回饋意見。

 

公开的 TensorFlow 2.0设计程序

简而言之,我们将针对已在计划中的更新有一系列的「公开设计评论」。这个过程会说明那些即将纳入TensorFlow 2.0中的功能,并且允许社群提出修改且表达关切。若您想得知评论的公告与设计过程的进展,请加入developers@tensorflow.org。一旦预览版本于2018年下半年发布之后,我们期盼收到使用者对于计画中的更新的回馈意见。

 

Compatibility and continuity

TensorFlow 2.0 is an opportunity to correct mistakes and to make improvements which are otherwise forbidden under semantic versioning.

 

相容性與連續性

TensorFlow 2.0的發佈是一個改正錯誤的好機會,並且針對在semantic versioning下被禁止的部分作出改善。

 

相容性与连续性

TensorFlow 2.0的发布是一个改正错误的好机会,并且针对在semantic versioning下被禁止的部分作出改善。

 

To ease the transition, we will create a conversion tool which updates Python code to use TensorFlow 2.0 compatible APIs, or warns in cases where such a conversion is not possible automatically. A similar tool has helped tremendously in the transition to 1.0.

 

為減緩過渡時期的衝擊,我們將提供一個轉換工具,它具備兩項功能:(1)更新Python程式碼得以使用相容於TensorFlow 2.0的API;(2)假如轉換無法完全自動完成時,將發出警告。類似的工具在當年轉換到Tensorflow1.0版時可真是幫了大忙呢。

 

为减缓过渡时期的冲击,我们将提供一个转换工具,它具备两项功能:(1)更新Python程式码得以使用相容于TensorFlow 2.0的API;(2)假如转换无法完全自动完成时,将发出警告。类似的工具在当年转换到Tensorflow1.0版时可真是帮了大忙呢。

 

Not all changes can be made fully automatically. For example, we will be deprecating APIs, some of which do not have a direct equivalent. For such cases, we will offer a compatibility module (tensorflow.compat.v1) which contains the full TensorFlow 1.x API, and which will be maintained through the lifetime of TensorFlow 2.x.

 

並非所有的更新皆可全部自動完成。例如以棄用API來說,有些將要被棄用的API並沒有一個直接可對應的應用程式去處理。針對這樣的情況,我們將提供一套相容性模組(tensorflow.compat.v1),包含完整的TensorFlow 1.x API,並且確保它在TensorFlow 2.0的產品週期中被維護。

 

并非所有的更新皆可全部自动完成。例如以弃用API来说,有些将要被弃用的API并没有一个直接可对应的应用程式去处理。针对这样的情况,我们将提供一套相容性模组(tensorflow.compat.v1),包含完整的TensorFlow 1.x API,并且确保它在TensorFlow 2.0的产品周期中被维护。

 

We do not anticipate any further feature development on TensorFlow 1.x once a final version of TensorFlow 2.0 is released. We will continue to issue security patches for the last TensorFlow 1.x release for one year after TensorFlow 2.0’s release date.

 

一旦TensorFlow 2.0最終版本發佈後,就不會在開發任何TensorFlow 1.x的功能了。我們將在TensorFlow 2.0發佈一年之內,針對TensorFlow 1.x的最新版持續提供安全性修正程式(Security Patch)。

 

一旦TensorFlow 2.0最终版本发布后,就不会在开发任何TensorFlow 1.x的功能了。我们将在TensorFlow 2.0发布一年之内,针对TensorFlow 1.x的最新版持续提供安全性修正程式(Security Patch)。

 

On-disk compatibility

We do not intend to make breaking changes to SavedModels or stored GraphDefs (i.e., we plan to include all current kernels in 2.0). However, the changes in 2.0 will mean that variable names in raw checkpoints might have to be converted before being compatible with new models.

 

儲存的相容性

我們無意針對SavedModels或儲存的GraphDefs做出大幅度的修改。(例如,我們想在TensorFlow 2.0中納入所有現行的核心。)然而,在TensorFlow 2.0中的更新代表在原始檢查點中的變數名稱,在順利相容於新模型前可能需要進行轉換。

 

储存的相容性

我们无意针对SavedModels或储存的GraphDefs做出大幅度的修改。 (例如,我们想在TensorFlow 2.0中纳入所有现行的核心。)然而,在TensorFlow 2.0中的更新代表在原始检查点中的变数名称,在顺利相容于新模型前可能需要进行转换。

 

tf.contrib

TensorFlow’s contrib module has grown beyond what can be maintained and supported in a single repository. Larger projects are better maintained separately, while we will incubate smaller extensions along with the main TensorFlow code. Consequently, as part of releasing TensorFlow 2.0, we will stop distributing tf.contrib. We will work with the respective owners on detailed migration plans in the coming months, including how to publicise your TensorFlow extension in our community pages and documentation. For each of the contrib modules we will either a) integrate the project into TensorFlow; b) move it to a separate repository or c) remove it entirely. This does mean that all of tf.contrib will be deprecated, and we will stop adding new tf.contrib projects today. We are looking for owners/maintainers for a number of projects currently in tf.contrib, please contact us (reply to this email) if you are interested.

 

tf.contrib

TensorFlow的contrib模組的規模已超過可在單一版本庫中維護並支援的程度。較大的專案最好是獨立維護,同時我們會讓較小的擴充檔去跟著TensorFlow主線去走。結論是,作為發佈TensorFlow 2.0過程的一部分,我們將停止發佈tf.contrib。我們會在這幾個月之內針對個別擁有者去敲定遷移的細節,包括如何在我們的社群網頁和文件中宣傳您的TensorFlow擴充。針對每一個補充支援模組,我們將採取以下三項措施中的一項:

(a)整合專案進TensorFlow中;

(b)移至另外的版本庫,或

(c)將它整個移除。

這代表所有的tf.contrib未來都不會再使用,並且從今天起就不再允許加入新的補充支援模組專案。我們對目前tf.contrib的某些專案正在徵求維護者,如果您有興趣的話請和我們連繫(announce@tensorflow.org)。

 

tf.contrib

TensorFlow的contrib模组的规模已超过可在单一版本库中维护并支援的程度。较大的专案最好是独立维护,同时我们会让较小的扩充档去跟着TensorFlow主线去走。结论是,作为发布TensorFlow 2.0过程的一部分,我们将停止发布tf.contrib。我们会在这几个月之内针对个别拥有者去敲定迁移的细节,包括如何在我们的社群网页和文件中宣传您的TensorFlow扩充。针对每一个补充支援模组,我们将采取以下三项措施中的一项:

(a)整合专案进TensorFlow中;

(b)移至另外的版本库,或

(c)将它整个移除。

这代表所有的tf.contrib未来都不会再使用,并且从今天起就不再允许加入新的补充支援模组专案。我们对目前tf.contrib的某些专案正在征求维护者,如果您有兴趣的话请和我们连系(announce@tensorflow.org)。

 

Next steps

For questions about development of or migration to TensorFlow 2.0, contact us at discuss@tensorflow.org. To stay up to date with the details of 2.0 development, please subscribe to developers@tensorflow.org, and participate in related design reviews.

 

下一步

針對TensorFlow 2.0的開發或轉的的相關問題,請來信discuss@tensorflow.org 詢問。若想要得知TensorFlow 2.0的最新進度,請訂閱developers@tensorflow.org ,並且參與相關的設計評論,謝謝。

 

下一步

针对TensorFlow 2.0的开发或转的的相关问题,请来信discuss@tensorflow.org 询问。若想要得知TensorFlow 2.0的最新进度,请订阅developers@tensorflow.org ,并且参与相关的设计评论,谢谢。

 

On behalf of the TensorFlow team,

Martin

 

謹代表全體TensorFlow團隊

Martin

 

谨代表全体TensorFlow团队

Martin

 

相關文章