AI

やってみた!「TensorFlowコンパイル」入門

投稿日:2022年5月6日 更新日:


tensorflowを使った学習には時間がかかるため、CPUの拡張命令やGPUなどをフルに使って効率化できる工夫がされています。当然、最新のCPU・GPUアーキテクチャに追随していくことになります。

しかし、開発の現場では、手元にある古いPCや廉価版PCなど、非力なCPUを使わざるを得ないこともあるでしょう。

使用するインテルCPUがサポートする「ストリーミングSIMD拡張命令(Streaming SIMD Extensions:SSE)」の命令セットによっては、単純にTesorFlowの最新版をインストールしても、エラーになるため使えません。

そんな時のために、tensorflowをコンパイルする方法を知っておけば、役に立つこともあると思います。
実際に、Linuxをインストールした最安値の廉価版ノートPC(ThirdWave製)でTensorFlowのコンパイルが必要となりました。

TensorFlowをLinuxでコンパイルして使用する方法を解説します。


■ 発生するエラー「AVX2命令が使えない」

まず、tensorflowの最新版を次のようにインストールします。
インストールは、正常に終了します。

 pip install --upgrade tensorflow

ちなみに、Pythonのバージョンは、次の通りです

> python –version

Python 3.9.7

そして、インストールしたtensorflowのバージョンを表示するプログラムを実行します。

# -*- coding: utf-8 -*-
import numpy as np
import tensorflow as tf
print(tf.__version__)

そうすると、以下のようなエラーが発生し、実行できません。

 The TensorFlow library was compiled to use AVX2 instructions, but these aren’t available on your machine.

インストールされたtensorflowのライブラリは、AVX2命令セットを使うようにコンパイルされていますが、使っているコンピュータのCPUには、AVX2命令セットが未サポートと言われてしまいます。

理由は、現在(2022/4/29時点)、配布されているコンパイル済のtensorflowのライブラリはAVX2命令の使用ありきでコンパイルされているためです。

動かした廉価版ノートPCのスペックは、次のようなものです。
CPUは、インセル製セレロンの4コアで、SSEとSSE2は、かろうじてサポートされていますが、確かに、肝心のAVX2はサポートされていません。

> cat /proc/cpuinfo

processor	:  
vendor_id	: GenuineIntel
cpu family	: 6
model		: 122
model name	: Intel(R) Celeron(R) N4120 CPU @ 1.10GHz
stepping	: 8
microcode	: 0x1a
cpu MHz		: 1100.000
cache size	: 4096 KB
physical id	: 0
siblings	: 4
core id		: 0
cpu cores	: 4
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 24
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm 3dnowprefetch cpuid_fault cat_l2 cdp_l2 ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust smep erms mpx rdt_a rdseed smap clflushopt intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts umip rdpid md_clear arch_capabilities
vmx flags	: vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple shadow_vmcs ept_mode_based_exec tsc_scaling
bugs		: spectre_v1 spectre_v2 spec_store_bypass
bogomips	: 2188.80
clflush size	: 64
cache_alignment	: 64
address sizes	: 39 bits physical, 48 bits virtual
power management:

processor	: 1
vendor_id	: GenuineIntel
cpu family	: 6
model		: 122
model name	: Intel(R) Celeron(R) N4120 CPU @ 1.10GHz
stepping	: 8
microcode	: 0x1a
cpu MHz		: 1600.000
cache size	: 4096 KB
physical id	: 0
siblings	: 4
core id		: 1
cpu cores	: 4
apicid		: 2
initial apicid	: 2
fpu		: yes
fpu_exception	: yes
cpuid level	: 24
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm 3dnowprefetch cpuid_fault cat_l2 cdp_l2 ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust smep erms mpx rdt_a rdseed smap clflushopt intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts umip rdpid md_clear arch_capabilities
vmx flags	: vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple shadow_vmcs ept_mode_based_exec tsc_scaling
bugs		: spectre_v1 spectre_v2 spec_store_bypass
bogomips	: 2188.80
clflush size	: 64
cache_alignment	: 64
address sizes	: 39 bits physical, 48 bits virtual
power management:

processor	: 2
vendor_id	: GenuineIntel
cpu family	: 6
model		: 122
model name	: Intel(R) Celeron(R) N4120 CPU @ 1.10GHz
stepping	: 8
microcode	: 0x1a
cpu MHz		: 1462.057
cache size	: 4096 KB
physical id	: 0
siblings	: 4
core id		: 2
cpu cores	: 4
apicid		: 4
initial apicid	: 4
fpu		: yes
fpu_exception	: yes
cpuid level	: 24
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm 3dnowprefetch cpuid_fault cat_l2 cdp_l2 ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust smep erms mpx rdt_a rdseed smap clflushopt intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts umip rdpid md_clear arch_capabilities
vmx flags	: vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple shadow_vmcs ept_mode_based_exec tsc_scaling
bugs		: spectre_v1 spectre_v2 spec_store_bypass
bogomips	: 2188.80
clflush size	: 64
cache_alignment	: 64
address sizes	: 39 bits physical, 48 bits virtual
power management:

processor	: 3
vendor_id	: GenuineIntel
cpu family	: 6
model		: 122
model name	: Intel(R) Celeron(R) N4120 CPU @ 1.10GHz
stepping	: 8
microcode	: 0x1a
cpu MHz		: 1302.072
cache size	: 4096 KB
physical id	: 0
siblings	: 4
core id		: 3
cpu cores	: 4
apicid		: 6
initial apicid	: 6
fpu		: yes
fpu_exception	: yes
cpuid level	: 24
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm 3dnowprefetch cpuid_fault cat_l2 cdp_l2 ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust smep erms mpx rdt_a rdseed smap clflushopt intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts umip rdpid md_clear arch_capabilities
vmx flags	: vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple shadow_vmcs ept_mode_based_exec tsc_scaling
bugs		: spectre_v1 spectre_v2 spec_store_bypass
bogomips	: 2188.80
clflush size	: 64
cache_alignment	: 64
address sizes	: 39 bits physical, 48 bits virtual
power management:

■ 解決策「tensorflowをAVX2命令セットを使わないようにコンパイル」

解決策は、tensorflowをAVX2命令セットを使わないようにコンパイルすることです。
コンパイルの手順は、以下の通りです。(参考:ソースからのビルド

1)ビルドツール「bazel」をインストール

> sudo apt install openjdk-8-jdk
>
> echo “deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8” | sudo tee /etc/apt/sources.list.d/bazel.list
>
> curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add –
>
> sudo apt update && sudo apt install bazel


2)tensorflowの最新ソースを取得

現在(2022/4/29時点)、バージョンは「Release 2.10.0」です。

> git clone https://github.com/tensorflow/tensorflow.git

ダンロードしたディレクトリに移動

> cd tensorflow


3)bazelでビルド


まず、ビルドするためのパッケージを生成します。


> bazel build //tensorflow/tools/pip_package:build_pip_package


次にコンフィギュレーションを実行します。
すべて、いいえ(N)で指定します。(廉価版ノートPCにはGPUもありません)


> ./configure

You have bazel 5.1.1 installed.
Please specify the location of python. [Default is /home/swata/anaconda3/bin/python3]:

Found possible Python library paths:
/home/swata/anaconda3/lib/python3.9/site-packages
Please input the desired Python library path to use. Default is [/home/swata/anaconda3/lib/python3.9/site-packages]

Do you wish to build TensorFlow with ROCm support? [y/N]: N
No ROCm support will be enabled for TensorFlow.

Do you wish to build TensorFlow with CUDA support? [y/N]: N
No CUDA support will be enabled for TensorFlow.

Do you wish to download a fresh release of clang? (Experimental) [y/N]: N
Clang will not be downloaded.

Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -Wno-sign-compare]:

Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]: N
Not configuring the WORKSPACE for Android builds.

Preconfigured Bazel build configs. You can use any of the below by adding "--config=<>" to your build command. See .bazelrc for more details.
--config=mkl # Build with MKL support.
--config=mkl_aarch64 # Build with oneDNN and Compute Library for the Arm Architecture (ACL).
--config=monolithic # Config for mostly static monolithic build.
--config=numa # Build with NUMA support.
--config=dynamic_kernels # (Experimental) Build kernels into separate shared objects.
--config=v1 # Build with TensorFlow 1 API instead of TF 2 API.
Preconfigured Bazel build configs to DISABLE default on features:
--config=nogcp # Disable GCP support.
--config=nonccl # Disable NVIDIA NCCL support.
Configuration finished
>


その後、実際にビルドを実行します。オプションは、ビルド時のJavaVitualMachineの使用メモリ上限を512MB(–host_jvm_args=-Xmx512m )、ビルド時のジョブ数(–jobs=1)を指定します。

※CPUコア数が4つなので、デフォルトで4つで並列コンパイルを実施してくれますが、4GBのメモリではメモリが不足し、スワップを増やしてもスラッシングが発生します。そのため、メモリ上限と、ジョブ数(使用するCPUコア数)を指定しています。

> bazel –host_jvm_args=-Xmx512m build –jobs=1 //tensorflow/tools/pip_package:build_pip_package

Starting local Bazel server and connecting to it…
ERROR: --host_jvm_args=-Xmx512m :: Unrecognized option: --host_jvm_args=-Xmx512m
swata@swata-VF-AD4S:~/tensorflow$ bazel --host_jvm_args=-Xmx512m --host_jvm_args=-Xms512m build --jobs=1 //tensorflow/tools/pip_package:build_pip_package
WARNING: Running Bazel server needs to be killed, because the startup options are different.
Starting local Bazel server and connecting to it…
INFO: Options provided by the client:
Inherited 'common' options: --isatty=1 --terminal_columns=80
INFO: Reading rc options for 'build' from /home/swata/tensorflow/.bazelrc:
Inherited 'common' options: --experimental_repo_remote_exec
INFO: Reading rc options for 'build' from /home/swata/tensorflow/.bazelrc:
'build' options: --define framework_shared_object=true --define=use_fast_cpp_protos=true --define=allow_oversize_protos=true --spawn_strategy=standalone -c opt --announce_rc --define=grpc_no_ares=true --noincompatible_remove_legacy_whole_archive --enable_platform_specific_config --define=with_xla_support=true --config=short_logs --config=v2 --define=no_aws_support=true --define=no_hdfs_support=true --experimental_cc_shared_library --experimental_link_static_libraries_once=true
INFO: Reading rc options for 'build' from /home/swata/tensorflow/.tf_configure.bazelrc:
'build' options: --action_env PYTHON_BIN_PATH=/home/swata/anaconda3/bin/python3 --action_env PYTHON_LIB_PATH=/home/swata/anaconda3/lib/python3.9/site-packages --python_path=/home/swata/anaconda3/bin/python3
INFO: Reading rc options for 'build' from /home/swata/tensorflow/.bazelrc:
'build' options: --deleted_packages=tensorflow/compiler/mlir/tfrt,tensorflow/compiler/mlir/tfrt/benchmarks,tensorflow/compiler/mlir/tfrt/jit/python_binding,tensorflow/compiler/mlir/tfrt/jit/transforms,tensorflow/compiler/mlir/tfrt/python_tests,tensorflow/compiler/mlir/tfrt/tests,tensorflow/compiler/mlir/tfrt/tests/ir,tensorflow/compiler/mlir/tfrt/tests/analysis,tensorflow/compiler/mlir/tfrt/tests/jit,tensorflow/compiler/mlir/tfrt/tests/lhlo_to_tfrt,tensorflow/compiler/mlir/tfrt/tests/tf_to_corert,tensorflow/compiler/mlir/tfrt/tests/tf_to_tfrt_data,tensorflow/compiler/mlir/tfrt/tests/saved_model,tensorflow/compiler/mlir/tfrt/transforms/lhlo_gpu_to_tfrt_gpu,tensorflow/core/runtime_fallback,tensorflow/core/runtime_fallback/conversion,tensorflow/core/runtime_fallback/kernel,tensorflow/core/runtime_fallback/opdefs,tensorflow/core/runtime_fallback/runtime,tensorflow/core/runtime_fallback/util,tensorflow/core/tfrt/common,tensorflow/core/tfrt/eager,tensorflow/core/tfrt/eager/backends/cpu,tensorflow/core/tfrt/eager/backends/gpu,tensorflow/core/tfrt/eager/core_runtime,tensorflow/core/tfrt/eager/cpp_tests/core_runtime,tensorflow/core/tfrt/gpu,tensorflow/core/tfrt/run_handler_thread_pool,tensorflow/core/tfrt/runtime,tensorflow/core/tfrt/saved_model,tensorflow/core/tfrt/graph_executor,tensorflow/core/tfrt/saved_model/tests,tensorflow/core/tfrt/tpu,tensorflow/core/tfrt/utils
INFO: Found applicable config definition build:short_logs in file /home/swata/tensorflow/.bazelrc: --output_filter=DONT_MATCH_ANYTHING
INFO: Found applicable config definition build:v2 in file /home/swata/tensorflow/.bazelrc: --define=tf_api_version=2 --action_env=TF2_BEHAVIOR=1
INFO: Found applicable config definition build:linux in file /home/swata/tensorflow/.bazelrc: --copt=-w --host_copt=-w --define=PREFIX=/usr --define=LIBDIR=$(PREFIX)/lib --define=INCLUDEDIR=$(PREFIX)/include --define=PROTOBUF_INCLUDE_PATH=$(PREFIX)/include --cxxopt=-std=c++14 --host_cxxopt=-std=c++14 --config=dynamic_kernels --distinct_host_configuration=false --experimental_guard_against_concurrent_changes
INFO: Found applicable config definition build:dynamic_kernels in file /home/swata/tensorflow/.bazelrc: --define=dynamic_loaded_kernels=true --copt=-DAUTOLOAD_DYNAMIC_KERNELS
INFO: Analyzed target //tensorflow/tools/pip_package:build_pip_package (487 packages loaded, 28956 targets configured).
INFO: Found 1 target…
INFO: Deleting stale sandbox base /home/swata/.cache/bazel/_bazel_swata/20b6424e8bc606f431b6053b4939f6e8/sandbox
Target //tensorflow/tools/pip_package:build_pip_package up-to-date:
bazel-bin/tensorflow/tools/pip_package/build_pip_package
INFO: Elapsed time: 40016.857s, Critical Path: 488.45s
INFO: 3658 processes: 521 internal, 3137 local.
INFO: Build completed successfully, 3658 total actions
>


10時間以上かかって、ようやくビルドが終了します。


4)インストール用アーカイブファイル(whl)の生成

ビルドが終わったら、次のコマンドでインストール用アーカイブファイル(whl)を作成します。


> ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

2022年 4月 29日 金曜日 12:38:26 JST : === Preparing sources in dir: /tmp/tmp.P15yqmknRf
~/tensorflow ~/tensorflow
~/tensorflow
~/tensorflow/bazel-bin/tensorflow/tools/pip_package/build_pip_package.runfiles/org_tensorflow ~/tensorflow
~/tensorflow
/tmp/tmp.P15yqmknRf/tensorflow/include ~/tensorflow
~/tensorflow
2022年 4月 29日 金曜日 12:39:06 JST : === Building wheel
warning: no files found matching 'README'
warning: no files found matching '<em>.pyd' under directory '</em>'
warning: no files found matching '<em>.pyi' under directory '</em>'
warning: no files found matching '<em>.pd' under directory '</em>'
warning: no files found matching '<em>.dylib' under directory '</em>'
warning: no files found matching '<em>.dll' under directory '</em>'
warning: no files found matching '<em>.lib' under directory '</em>'
warning: no files found matching '<em>.csv' under directory '</em>'
warning: no files found matching '<em>.h' under directory 'tensorflow/include/tensorflow' warning: no files found matching '</em>.proto' under directory 'tensorflow/include/tensorflow'
warning: no files found matching '*' under directory 'tensorflow/include/third_party'
2022年 4月 29日 金曜日 12:40:24 JST : === Output wheel file is in: /tmp/tensorflow_pkg
>


> cd tensorflow_pkg/
> ls

tensorflow-2.10.0-cp39-cp39-linux_x86_64.whl


5)pipでwhlをインストール

次のように、pipでwhlをインストールします。

> pip install tensorflow-2.10.0-cp39-cp39-linux_x86_64.whl

Processing ./tensorflow-2.10.0-cp39-cp39-linux_x86_64.whl
Requirement already satisfied: typing-extensions>=3.6.6 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorflow==2.10.0) (3.10.0.2)
Requirement already satisfied: libclang>=13.0.0 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorflow==2.10.0) (13.0.0)
Requirement already satisfied: numpy>=1.20 in /home/swata/.local/lib/python3.9/site-packages (from tensorflow==2.10.0) (1.22.3)
Requirement already satisfied: termcolor>=1.1.0 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorflow==2.10.0) (1.1.0)
Requirement already satisfied: keras-preprocessing>=1.1.1 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorflow==2.10.0) (1.1.2)
Requirement already satisfied: opt-einsum>=2.3.2 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorflow==2.10.0) (3.3.0)
Requirement already satisfied: astunparse>=1.6.0 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorflow==2.10.0) (1.6.3)
Requirement already satisfied: absl-py>=1.0.0 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorflow==2.10.0) (1.0.0)
Requirement already satisfied: protobuf>=3.9.2 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorflow==2.10.0) (3.19.4)
Requirement already satisfied: wrapt>=1.11.0 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorflow==2.10.0) (1.12.1)
Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorflow==2.10.0) (0.24.0)
Requirement already satisfied: packaging in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorflow==2.10.0) (21.0)
Requirement already satisfied: six>=1.12.0 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorflow==2.10.0) (1.16.0)
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno -3] 名前解決に一時的に失敗しました')': /simple/tensorflow-estimator/
Collecting tensorflow-estimator<2.10,>=2.9.0rc0
Downloading tensorflow_estimator-2.9.0rc0-py2.py3-none-any.whl (438 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 438.7/438.7 KB 1.2 MB/s eta 0:00:00
Collecting keras<2.10,>=2.9.0rc0
Downloading keras-2.9.0rc2-py2.py3-none-any.whl (1.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 1.7 MB/s eta 0:00:00
Requirement already satisfied: h5py>=2.9.0 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorflow==2.10.0) (3.3.0)
Requirement already satisfied: tensorboard<2.9,>=2.8 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorflow==2.10.0) (2.8.0)
Requirement already satisfied: grpcio<2.0,>=1.24.3 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorflow==2.10.0) (1.44.0)
Requirement already satisfied: setuptools in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorflow==2.10.0) (58.0.4)
Collecting flatbuffers<2,>=1.12
Downloading flatbuffers-1.12-py2.py3-none-any.whl (15 kB)
Collecting gast<=0.4.0,>=0.2.1
Downloading gast-0.4.0-py3-none-any.whl (9.8 kB)
Requirement already satisfied: google-pasta>=0.1.1 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorflow==2.10.0) (0.2.0)
Requirement already satisfied: wheel<1.0,>=0.23.0 in /home/swata/.local/lib/python3.9/site-packages (from astunparse>=1.6.0->tensorflow==2.10.0) (0.37.1)
Requirement already satisfied: markdown>=2.6.8 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow==2.10.0) (3.3.6)
Requirement already satisfied: tensorboard-plugin-wit>=1.6.0 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow==2.10.0) (1.8.1)
Requirement already satisfied: google-auth<3,>=1.6.3 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow==2.10.0) (2.6.2)
Requirement already satisfied: requests<3,>=2.21.0 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow==2.10.0) (2.26.0)
Requirement already satisfied: werkzeug>=0.11.15 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow==2.10.0) (2.0.2)
Requirement already satisfied: tensorboard-data-server<0.7.0,>=0.6.0 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow==2.10.0) (0.6.1)
Requirement already satisfied: google-auth-oauthlib<0.5,>=0.4.1 in /home/swata/anaconda3/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow==2.10.0) (0.4.6)
Requirement already satisfied: pyparsing>=2.0.2 in /home/swata/anaconda3/lib/python3.9/site-packages (from packaging->tensorflow==2.10.0) (3.0.4)
Requirement already satisfied: cachetools<6.0,>=2.0.0 in /home/swata/anaconda3/lib/python3.9/site-packages (from google-auth<3,>=1.6.3->tensorboard<2.9,>=2.8->tensorflow==2.10.0) (5.0.0)
Requirement already satisfied: pyasn1-modules>=0.2.1 in /home/swata/anaconda3/lib/python3.9/site-packages (from google-auth<3,>=1.6.3->tensorboard<2.9,>=2.8->tensorflow==2.10.0) (0.2.8)
Requirement already satisfied: rsa<5,>=3.1.4 in /home/swata/anaconda3/lib/python3.9/site-packages (from google-auth<3,>=1.6.3->tensorboard<2.9,>=2.8->tensorflow==2.10.0) (4.8)
Requirement already satisfied: requests-oauthlib>=0.7.0 in /home/swata/anaconda3/lib/python3.9/site-packages (from google-auth-oauthlib<0.5,>=0.4.1->tensorboard<2.9,>=2.8->tensorflow==2.10.0) (1.3.1)
Requirement already satisfied: importlib-metadata>=4.4 in /home/swata/anaconda3/lib/python3.9/site-packages (from markdown>=2.6.8->tensorboard<2.9,>=2.8->tensorflow==2.10.0) (4.8.1)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/swata/anaconda3/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.9,>=2.8->tensorflow==2.10.0) (1.26.7)
Requirement already satisfied: charset-normalizer~=2.0.0 in /home/swata/anaconda3/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.9,>=2.8->tensorflow==2.10.0) (2.0.4)
Requirement already satisfied: certifi>=2017.4.17 in /home/swata/anaconda3/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.9,>=2.8->tensorflow==2.10.0) (2021.10.8)
Requirement already satisfied: idna<4,>=2.5 in /home/swata/anaconda3/lib/python3.9/site-packages (from requests<3,>=2.21.0->tensorboard<2.9,>=2.8->tensorflow==2.10.0) (3.2)
Requirement already satisfied: zipp>=0.5 in /home/swata/anaconda3/lib/python3.9/site-packages (from importlib-metadata>=4.4->markdown>=2.6.8->tensorboard<2.9,>=2.8->tensorflow==2.10.0) (3.6.0)
Requirement already satisfied: pyasn1<0.5.0,>=0.4.6 in /home/swata/anaconda3/lib/python3.9/site-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard<2.9,>=2.8->tensorflow==2.10.0) (0.4.8)
Requirement already satisfied: oauthlib>=3.0.0 in /home/swata/anaconda3/lib/python3.9/site-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<0.5,>=0.4.1->tensorboard<2.9,>=2.8->tensorflow==2.10.0) (3.2.0)
Installing collected packages: keras, flatbuffers, tensorflow-estimator, gast, tensorflow
Attempting uninstall: keras
Found existing installation: keras 2.8.0
Uninstalling keras-2.8.0:
Successfully uninstalled keras-2.8.0
Attempting uninstall: flatbuffers
Found existing installation: flatbuffers 2.0
Uninstalling flatbuffers-2.0:
Successfully uninstalled flatbuffers-2.0
Attempting uninstall: gast
Found existing installation: gast 0.5.3
Uninstalling gast-0.5.3:
Successfully uninstalled gast-0.5.3
Attempting uninstall: tensorflow
Found existing installation: tensorflow 2.8.0
Uninstalling tensorflow-2.8.0:
Successfully uninstalled tensorflow-2.8.0
Successfully installed flatbuffers-1.12 gast-0.4.0 keras-2.9.0rc2 tensorflow-2.10.0 tensorflow-estimator-2.9.0rc0
>


6)pipでkerasをインストール

tensorflowの上位ライブラリであるKerasをインストールします

> pip install keras


7)tensorflowのバージョンを表示

再度、インストールしたtensorflowのバージョンを表示するプログラムを実行します。

# -*- coding: utf-8 -*-
import numpy as np
import tensorflow as tf
print(tf.__version__)

正常に表示できます。

2.10.0

後は、通常通り、AIプログラミングを実施することができます。

■ まとめ

tesorflowのコンパイルで、何度となく、途中でロックしてしまう事象に遭遇しました。
その度に、以下のシステムモニタでメモリの使用状況を見ながら、使用メモリ上限を減らしたり、スワップを大幅に拡張したりして、試行錯誤をしました。

それでも、まだ途中でロックするため、調べた結果、ジョブ数の指定があることを知り、やっと正常にコンパイルすることができました。

ジョブ数を増やせば、コンパイルを並列化できるため、コンパイル時間を大幅に削減することができるかもしれません。しかし、それに伴ってメモリも倍々で必要となります。
コンピュータに実装されたメモリサイズを確認し、コンパイルを実施する必要があります。


ソフトウェア開発・システム開発業務/セキュリティ関連業務/ネットワーク関連業務/最新技術に関する業務など、「学習力×発想力×達成力×熱意」で技術開発の実現をサポート。お気軽にお問合せ下さい


-AI

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

はじめての「AI(人工知能)」入門

これから花形になるであろう最先端のデータサイエンティストやAIエンジニアにとって、これから話すようなことは寝ててもわかるようなことばかりかもしれません。ここでは、それ以外の普通のITエンジニアが、実践 …

実践入門「ChatGPT API」とは?

生成系AIの騎手として、ChatGPTの本格運用が始まりました。その画期的な動作に感動を覚えた人も多いと思います。ChatGPTには、REST APIが公開されています。そのREST APIのPyth …

Chinese (Simplified)Chinese (Traditional)EnglishFilipinoFrenchGermanHindiJapaneseKoreanMalayThaiVietnamese