Build remote tensorflow workstation from scratch

Introduction

搭建 workstation

关于 tensorflow

功能扩展

Why

工作方式 vs 特性 本地 公司服务器 个人工作站
开发/测试/部署环境完全一致
支持高负荷复杂任务
终端关机/休眠/断网不影响工作
不依赖特定终端设备
终端设备成本低
系统全部资源可用
系统最高权限可用
系统硬件资源可控
支持个性化定制开发环境
不依赖 VPN / 堡垒机
支持多种虚拟化技术
支持多种私有云服务
配置文件长期稳定有效
支持图形界面
可作为家庭数据中心使用

Plan

需求

支持 CUDA 加速

多任务处理性能

24 小时开机

支持虚拟化

支持远程访问

大内存

大硬盘容量,高速 IO

硬件扩展性

方案对比

  • 设最低价格指数为 1,最低性能指数为 1
方案 vs 特性 类别 价格 性能 性价比 网速 稳定性 售后 折腾度 扩展度
AWS 云主机 10 1.3 0.13
阿里云 云主机 5.4 1.5 0.27777778
谷歌云 云主机 - - -
阿里云物理机 物理机 4.8 1.5 0.3125
商用机 物理机 2 1.8 0.9
准系统 物理机 1.2 3 2.5
DIY 物理机 1 3 3

Hardware

预算参考

初级

  • amd / E5 v3 / E3 / i7 + 顶级 GPU

中级

  • 顶级 i7 + 2 顶级 GPU + SSD + 硬盘阵列

高级

  • 双路 E5 + 4 顶级 GPU + 大容量 SSD + 硬盘阵列 + 海量内存 + 水冷

平台

平台 vs 特性 CPU 接口 最大内存 双路 CPU 类型 内存通道
X99 LGA 2011     i7 / i5 / E3 /E5  
Z270 LGA 1151     i7 / i5  
C620 LGA 2011     E5 v3/v4  
AMD       r7 / r5  

商用机

NVIDIA DGX-1

准系统

准系统 vs 特性    
超微 7048    
FB 开源系统   https://code.facebook.com/posts/1687861518126048/facebook-to-open-source-ai-hardware-design/
矿机    
T7310    

二手服务器

主板

重要接口

接口 vs 特性 对应设备 规格 数量 备注
PCIE 16x 显卡 PCIE 3.0 至少 3 个,越多越好  
PCIE 8x   PCIE 3.0    
PCIE 4x PCI SSD PCIE 3.0    
PCH 4x 雷电卡或 PCI SSD PCIE 2.0    
内存槽 内存 DDR4 最少 4 个,通常 8 个以上,16 个更好 注意 4 通道内存对应的插槽颜色
SATA 固态或机械硬盘 SATA3 至少 4 个以上,越多越好  
m.2 m.2 固态硬盘 nvme 如果没这个,有多余的 PCI 也行,有了更好  
raid 板载 raid 卡   比较少见,家用软 raid 可以取代  
thunderbolt 雷电扩展卡   linux 下没有驱动,如果有雷电外设,用 windows 可以考虑  
SAS        
网卡 有线网络 千兆/万兆 至少 1 个,多 个更好,百兆卡不行,至少千兆卡  
WIFI 无线网络 802.11ac 实在不方便扯网线可以考虑,必须支持 5Ghz 频段  

推荐

  • 超微 x10 系列
  • 华硕 X99
  • 技嘉

CPU

重要指标

  • 主频

    单线程影响显著

  • 缓存

    越大越好

  • PCIE 总线

    显卡和 PCIE 固态硬盘都会占用 PCIE 通道,主板 plx 控制器可以扩展总线

  • 制程

    影响功耗,性能

  • 架构

    影响性能,同主频工作效率

  • 超线程技术(HT)

    会降低主频,提高核心利用率,增加调度切换成本,建议关闭

  • 最大支持内存

    桌面 U 通常为 64G,服务器 U 可支持到 2T

产品一览

型号 vs 特性 性能 价格区间 性价比 功耗 核心 主频 缓存 ECC 双路 超频 PCIE 备注
E5 2696 v3 22349 4000 5.58725 135W 18 2.3 45M 40 性价比高,需鉴别经验
E5 2696 v4 22092 10000 2.2092 135W 22 2.2 55M 40 适合服务器,机器学习利用不全
E3 1230 v5 9705 1500 6.47 80W 4 3.4 8M 20 各方面与 i7 相近
i7 7700k 12309 2000 6.1545 91W 4 4.2 8M 16 常规 i7,中规中矩
i7 6950x 19974 10000 1.9974 140W 10 3.0 25M 40 家用旗舰,价格高
i7 5930k         6 3.5           省钱之选
amd r7 1800x 15469 4000 3.86725 95W 8 3.6 4M+16M 24 性能超越大多数 i7,性价比高

选购 tips

  • 盒装、散装
  • ES、QS、正显、不显

运算卡

重要指标

  • 非公版设计
  • 显存位宽
  • 显存容量

    取决于模型大小

  • cuda 单元
  • 核心频率
  • 支持 cuDNN

产品一览

型号 vs 特性 TFLOP 价格区间 性价比 显存 核心频率 功率 非公版 cuda 单元 cuDNN 备注
1070 6.5 2000 3.25e-3 8G 1.5G 150W 1920   入门级别
1080 9 3000 3e-3 8G 1.6G 180W 2560   家用高端
1080ti 11 6000 1.8333333e-3 11G 1.5G 220W     指标非常接近 titan X,性价比高
titan X 11 9000 1.2222222e-3 12G 1.4G 250W 3584   家用旗舰
K40m 4.29 20000 2.145e-4 12G     2880   专业卡,深度学习用不到

其他

  • 亮机卡

    支持 4K@60Hz 多屏,功耗低于 100W

  • sli
  • FPGA 卡
  • phi xeon 加速卡

散热器

产品一览

  • 水冷
  • 风冷
  • 显卡水冷

注意事项

  • 风道
  • 机箱的安装位是否匹配

推荐

  • 玄冰风冷
  • 海盗船 H60i / H100i

机箱

重要指标

  • 结实程度
  • 风扇位
  • 和主板螺丝孔匹配
  • 最大支持的显卡长度
  • 硬盘位

产品一览

  • itx
  • 中塔
  • 全塔
  • 1U、2U

内存

产品一览

  • DDR3 / DDR4
  • RECC / ECC

重要指标

  • 容量
  • 是否支持校验

    ECC / RECC

  • 频率

    2133、2400、更高

  • 电压

    低压、标压

硬盘

重要指标

  • 读写速度
  • 转速
  • 缓存大小
  • 颗粒类型

产品一览

  • SSD
    • m.2 ssd
    • SATA3 ssd
    • pci ssd
    • pci 转 m.2
  • HDD
    • SATA3 HDD
    型号 vs 特性 插槽 类型 容量 价格区间 缓存 颗粒 转速 连续读写 随机读写 备注
    希捷 SATA3 机械硬盘 8T       7200     数据盘
    西数红盘 SATA3 机械硬盘 4T 2300     5400     数据盘
    intel 750 PCI E 固态硬盘 1.2T 4500     - 2900M/s   缓存盘、系统盘
    三星 pro960 m.2 固态硬盘 1T 4500     -     缓存盘、系统盘

电源

重要指标

  • 功率

    >=显卡总功率*2

产品一览

  • 全新优质电源
  • 二手服务器电源

推荐

  • 海盗船 1000W(双卡)/ 1500W(四卡)

网络

网卡

路由

  • openwrt / ddwrt
    • dnsmasq
    • 广告拦截
    • 下载

交换机

线材

扩展

ups 后备电源

nas / raid

  • 硬 raid
  • 软 raid
  • fake raid
  • raid 0
  • raid 1
  • raid 5
  • raid 6
  • raid 10
  • raidz

    内存 + cache, 详见 zfs

推荐

  • 群晖
  • hp gen8
  • 乔鼎

OS

发行版

ubuntu

  • 简单省心

gentoo

  • 通过 use 标签定制包功能
  • Clags 优化,稳定性
  • 内核剪裁
  • 源码
  • slot 多版本共存
  • 文档

arch

  • 高效,轻量级,最新特性
  • 简单省心

安装方式

livecd

usb

硬盘

引导

GPT

mbr

grub/grub2

BIOS

UEFI

  • 内核支持

c- 关闭 secure boot

  • efibootmgr
  • uefi shell
  • rootwait
  • rootdelay

initramfs

  • dracut
  • genkernel

图形界面

gnome

kde

xfce

内核

版本

  • sys-kernel/alt-sources [11] (~4.9.5(4.9.5)): Kernel Sources and Patches for the System Rescue CD Standard Kernel
  • sys-kernel/argent-sources [5] (3.18.25(3.18)): Official Argent Linux Standard kernel sources
  • sys-kernel/aufs-sources (~4.9.12(4.9.12)): Full sources including the Gentoo patchset for the linux kernel tree and aufs4 support
  • sys-kernel/beaglebone-sources [42] (–): Official Sabayon Linux Standard kernel sources for beaglebone
  • sys-kernel/bfs-sources [36] (2.6.37-r4(2.6.37-r4)): Full sources for the Linux kernel with BFS schedular.
  • sys-kernel/calculate-sources (4.9.8(4.9.8)[13]): Calculate Linux kernel image
  • sys-kernel/chromeos-sources (–): Linux kernel source for the Samsung Chromebook
  • sys-kernel/ck-sources (~4.10.1(4.10.1)): Con Kolivas' high performance patchset and Gentoo's genpatches for Linux 4.10
  • sys-kernel/e-sources [19] (3.18.14(3.18)): Full sources for the Linux kernel including: gentoo, ck and other patches
  • sys-kernel/gentoo-sources (4.4.39(4.4.39)@01/22/2017 4.9.6-r1(4.9.6-r1)@03/20/2017 4.9.7(4.9.7)@02/07/2017 4.10.1(4.10.1)@03/19/2017 -> 3.4.113(3.4.113)^bs 3.8.13(3.8.13)^bs[49] 3.10.95(3.10.95)^bs 3.10.104-r1(3.10.104-r1)^bs 3.12.52-r1(3.12.52-r1)^bs 3.12.66(3.12.66)^bs 4.1.15-r1(4.1.15-r1)^bs 4.1.35(4.1.35)^bs 4.1.37(4.1.37)^bs 4.4.39(4.4.39)^bs 4.9.6-r1(4.9.6-r1)^bs): Full sources including the Gentoo patchset for the 4.6 kernel tree
  • sys-kernel/git-sources (~4.11_rc1(4.11_rc1)): Live -git version of the Linux kernel
  • sys-kernel/hardened-sources (4.8.17-r2(4.8.17-r2)): Hardened kernel sources (kernel series 4.9)
  • sys-kernel/infra-kernel-sources [24] (~3.15.2): Package to build kernel + initramfs for Gentoo infra boxes
  • sys-kernel/jens-n900-sources [23] (–):
  • sys-kernel/lh-sources [27] (~4.9.9(4.9.9)): Full sources including the Gentoo, BFQ and aufs patchset for the 4.9 kernel
  • sys-kernel/linaro-sources [31] (–): Live -git arm64 linaro version of the Linux kernel
  • sys-kernel/liquorix-sources (3.11.8(3.11.8)[18]): The Liquorix Kernel Sources v4.x
  • sys-kernel/longterm-sources [31] (2.6.32.68(2.6.32.68)): Longterm full sources for the Linux kernel
  • sys-kernel/meego-n900-sources [23] (–):
  • sys-kernel/mips-sources (–): Linux-Mips GIT sources for MIPS-based machines, dated 20161016
  • sys-kernel/nouveau-sources [51] (~9999): Patched kernel containing the latest nouveau sources
  • sys-kernel/odroid-sources (–): Linux kernel source for the ODROID-[UX]2 products
  • sys-kernel/odroidxu-sources (–): Linux kernel source for the ODROIDXU products
  • sys-kernel/omap4-sources [34] (–): OMAP4 sources
  • sys-kernel/openvz-sources (2.6.32.111.12(2.6.32.111.12)): Kernel sources with OpenVZ patchset
  • sys-kernel/pentoo-sources (4.7.10(4.7.10)[35]): Pentoo kernel sources (kernel series 4.7)
  • sys-kernel/pf-sources (~4.9_p5(4.9_p5)[48]): Linux kernel fork with new features, including the -ck patchset (BFS), BFQ
  • sys-kernel/radxa-sources [30] (–): Kernel sources for Radxa Rock
  • sys-kernel/raspberrypi-notro-sources [20] (–): ARCH_BCM2835 (Raspberry Pi) Linux kernel sources with Notro patches
  • sys-kernel/raspberrypi-sources (–): Raspberry PI kernel sources
  • sys-kernel/reiser4-sources (~4.9.9(4.9.9)[25]): Full sources including the Gentoo and Reiser4 patchsets for the 4.9 kernel tree
  • sys-kernel/rt-sources (~4.9.6_p4(4.9.6_p4)): Full Linux 4.9 kernel sources with the CONFIG_PREEMPT_RT patch
  • sys-kernel/sabayon-sources [42] (~4.9.9(4.9)): Official Sabayon Linux Standard kernel sources
  • sys-kernel/spike-sources [45] (~4.0.5(4.0)): Official Spike Linux Standard kernel sources
  • sys-kernel/std-sources [11] (~4.4.44(4.4.44)): Kernel Sources and Patches for the System Rescue CD Standard Kernel
  • sys-kernel/templar-sources [31] (~4.0): Official Spike Linux Grsecuity enhanced kernel image
  • sys-kernel/tuxonice-sources (3.0.35(3.0.35)[38]): TuxOnIce + Gentoo patchset sources
  • sys-kernel/ubuntu-sources (~4.8.16_p_p37_p39(4.8.16_p_p37_p39)[50]): Ubuntu patched kernel sources
  • sys-kernel/uksm-sources [9] (~3.3.5(3.3.5)): Full sources including the Gentoo patchset and UKSM patch for the 3.3 kernel tree
  • sys-kernel/vanilla-sources (~4.10.1(4.10.1)): Full sources for the Linux kernel
  • sys-kernel/xbox-sources (–): Full sources for the Xbox Linux kernel
  • sys-kernel/xen-dom0-sources [5] (~2.6.34-r4(2.6)): Xen dom0 Linux Kernel sources suitable for running on Xen and Amazon EC2
  • sys-kernel/xen-domU-sources [5] (~2.6.34-r4(2.6)): Xen domU Linux Kernel sources suitable for running on Xen and Amazon EC2
  • sys-kernel/zen-sources (~4.9.9999(4.9.9999)[15]): The Zen Kernel Live Sources

docker

>=3.10

BBR

>=4.9

ZFS

<4.10

Nvidia-driver

<4.10

CPU

  • 架构
  • 核心数
  • 调度策略

内存策略

文件系统

  • ZFS 支持

boot loader

grub

grub2

系统服务管理

systemd

openrc

参数设置

ulimit

分区

Software

for ML

nvidia-driver

cuda-toolkit

cudnn

tensorflow 安装

  • pip

    tensorflow-gpu

  • docker / nvidia-docker
  • anaconda
  • 系统包管理器
  • github 编译

    bazel / proxy chains

  • nvidia 官网教程
  • 手动安装

tensorflow 扩展

  • tensorflow board
  • tensorflow serving
  • tensorflow cluster

    公司服务器 pip 安装 tensorflow for cpu

jupyter

superset

for work

screen / tmux

spacevim / spacemacs

nextcloud

neo4j

airflow

分布式应用

  • 爬虫

邮件服务

  • mutt / sendmail
  • stmp

for fun

mldonkey

openstack

hashview

bitcoin

蜜罐

ZFS

  • ZIL
  • L2ARG
  • 内存缓冲
  • 去重
  • zraid

dm-writeboost

lvm

opencl

Tensorflow

基本概念

tensor

variable

graph

placeholder

session

常用工具

tflearn

tensorflow board

debug

优化问题求解

optimize

gradient

equal constraint

inequal constraint

normalize constraint

示例

lr

ocsvm

Remote

光猫改桥接 + DMZ

联通 200M 光猫可破

端口转发安全性更高,只是比较繁琐

华为 HG8264,TPlink GP110

淘宝在线破解

ssh 隧道 + 跳板机

阿里云北京 5M

美团云

ngrok

go 语言

简单快捷

DDNS

netgear

dnspod

push_ip / get_ip

ssh X forwarding

ssh -YC & config

DISPLAY update

  • preexec hook

xclip

vnc

x11vnc

Tips

DIY 注意事项

基本

  • 远离静电
  • 插孔匹配原则

CPU

  • 方向
  • 引脚对齐
  • 硅脂

主板

  • CMOS 电池
  • USB3
  • 阅读说明书
  • 去掉多余铜柱

内存

  • 颜色/多通道
  • 保持型号规格一致

散热器

  • 接好才再上电

硬盘

  • 固定紧
  • 平放

PCI 设备

  • 用螺钉紧固

电源

  • 6pin、8pin
  • 风扇方向

跳线

  • 极性

BIOS

多卡 PCI 冲突

legacy & EFI

硬盘传输模式

启动项

  • 添加硬盘后注意切换

raid

超线程

超频

  • i7 3930x + x79

网络安全

换 ssh 默认端口

及时打补丁升级服务

禁用 root 登录 ssh

使用密钥而非密码登录

域名隐私保护

iptables 防火墙

入侵检测

SELinux

解除限制

80 端口

  • 跳板机 nginx 代理
  • 使用 https,443 端口

DNS 污染

  • 自建递归 DNS

VPN

SS

  • vultr
  • linode
  • 阿里云香港节点
  • google ECS

nginx 反向代理

域名

购买

  • godaddy
  • 万网

DNS 设置

  • A 记录
  • CNAME 记录
  • NS server

UPS 电源

断电预警,短信通知

雷电接口

linux 雷电驱动尚不可用

延续

虚拟化

  • hyperv
  • esxi

    windows / linux / osx

  • xen
  • docker

    docker hub,交叉编译,github,自动构建

备份

  • tar 命令
  • 外接备份硬盘矩阵
  • 冗余备份盘

Q & A

Author: jiancheng.zhai

Created: 2017-05-10 三 16:27

Validate