<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Raspberrypi on CineNeural</title>
    <link>https://blog.cineneural.com/tags/raspberrypi/</link>
    <description>Recent content in Raspberrypi on CineNeural</description>
    <image>
      <title>CineNeural</title>
      <url>https://blog.cineneural.com/images/main/logo-2.png</url>
      <link>https://blog.cineneural.com/images/main/logo-2.png</link>
    </image>
    <generator>Hugo</generator>
    <language>en</language>
    <copyright>cineneural.com</copyright>
    <lastBuildDate>Wed, 03 Jun 2020 17:13:56 +0800</lastBuildDate>
    <atom:link href="https://blog.cineneural.com/tags/raspberrypi/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>RaspberryPis Tensorflow 分布式训练1</title>
      <link>https://blog.cineneural.com/blog/misc/raspberrypis-tensorflow-%E5%88%86%E5%B8%83%E5%BC%8F%E8%AE%AD%E7%BB%83%E9%9B%86%E7%BE%A41/</link>
      <pubDate>Wed, 03 Jun 2020 17:13:56 +0800</pubDate>
      <guid>https://blog.cineneural.com/blog/misc/raspberrypis-tensorflow-%E5%88%86%E5%B8%83%E5%BC%8F%E8%AE%AD%E7%BB%83%E9%9B%86%E7%BE%A41/</guid>
      <description>&lt;h2 id=&#34;为什么&#34;&gt;为什么&lt;/h2&gt;
&lt;p&gt;目前自己采购了35块树莓派4core4G用来计算Rosetta@home，等到COVID-2019过去之后，会用这些开发板测试TF项目，因为TF的生态链齐全，所以在工业上会考虑使用TF来做为最终的产品技术使用方案。&lt;/p&gt;
&lt;p&gt;未来的趋势会面向边缘计算领域，像自动驾驶，智能家居，家庭医疗辅助系统，农业生产，制造业零部件质量检测，工业机械磨损检测等等，都会考虑到数据的实时接受和传输，还有计算成本，在机器学习上，如果依靠云计算平台，去辅助上述这些项目，那么就需要考虑本地到服务中心的网络，带宽延迟，数据安全性，计算实时性的问题。如果依托边缘计算，采用工业的微控制器，在微控制器上部署模型以及Tensorflow Lite用于模型的推演，在本地解决计算高可用问题，无需将数据传递到公网上，减少带宽的消耗，从而降低计算成本。&lt;/p&gt;
&lt;h2 id=&#34;tensorflow-aarch64-源码构建&#34;&gt;Tensorflow aarch64 源码构建&lt;/h2&gt;
&lt;h3 id=&#34;安装依赖&#34;&gt;安装依赖&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;apt-get install libatlas3-base libopenblas-dev libopenblas-base libblas-dev gcc gfortran python3-dev libgfortran5 g++ libhdf5-dev libfreetype-dev build-essential openjdk-11-jdk zip unzip python3-h5py python3-numpy python3-pip

sudo pip3 install keras_preprocessing keras_applications
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;安装-bazel&#34;&gt;安装 Bazel&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.bazel.build/versions/3.4.0/install-compile-source.html#bootstrap-unix&#34;&gt;install-compile-bootstrap-unix&lt;/a&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;bazel 官方未给出arm64架构的二进制文件，所以需要自己手工编译

下载 bazel-2.0.0-dist.zip

运行 EXTRA_BAZEL_ARGS=&amp;#34;--host_javabase=@local_jdk//:jdk&amp;#34; bash ./compile.sh

拷贝 output/bazel 到 /usr/local/bin/hazel
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;编译-tensorflow&#34;&gt;编译 Tensorflow&lt;/h3&gt;
&lt;p&gt;Raspberry pi 4B 上安装的系统是Ubuntu 20.04 ARM64架构，Python Version: 3.8，Tensorflow官方未给出对应版本的python whl安装包，所以需要自己手动从源码构建&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git clone https://github.com/tensorflow/tensorflow.git

git checkout v2.2.0

./configure 配置选项

编译操作之前需要增加swap分区，4G系统内存编译是完全不够的，建议swap设置6G
最好能够单独增加一块USB3转SATA的移动硬盘用来单独增加SWAP分区

fallocate -l 6G /swapfile
chmod 0600 /swapfile
mkswap /swapfile
swapon /swapfile

执行编译操作 bazel  build --config=noaws --config=nogcp --config=nohdfs --config=nonccl --config=monolithic --config=v2 --local_cpu_resources=3 //tensorflow/tools/pip_package:build_pip_package

由于是直接在4核4G的Raspberry pi 上构建，所以需要耐心等待，编译时间大概在 15 - 25 小时之间
☕️☕️☕️

编译完成之后执行构建pip安装包 bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

tensorflow-2.2.0-cp38-cp38-linux_aarch64.whl 安装包构建完成

最后执行 pip install tensorflow-2.2.0-cp38-cp38-linux_aarch64.whl
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;tf-测试&#34;&gt;TF 测试&lt;/h2&gt;
&lt;p&gt;使用官方的最简MNIST教程中的代码&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
