分类
命令行 工具

TensorFlow 容器支持 GPU

一台 GPU 机器,直接访问 gpu 是没有问题的,但是安装 tensorflow 后,一直访问不到 GPU,看了一下 TensorFlow 支持容器化安装,是可以支持 GPU 的。

tensorflow 容器化安装步骤

前提

必须先在宿主机上 安装 NVIDIA driver 和 Docker。

安装 nvidia-docker

Installation Guide — NVIDIA Cloud Native Technologies documentation

安装 tensorflow

docker pull tensorflow/tensorflow:2.11.0-gpu

检查是否安装成功

启动 tensorflow

docker run --gpus all -it   -v $PWD:/tmp -w /tmp tensorflow/tensorflow:2.11.0-gpu bash

检查是否支持 gpu

nvidia-smi

 docker run --gpus all -it --rm tensorflow/tensorflow:2.11.0-gpu \
   python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
分类
命令行 工具

我在 Docker 上犯的错误

今天犯了一个错误,犯这个错误的原因是没有理解 docker 的设计哲学,大概花了 3 个小时来折腾一个事情。

起因

一个容器没有安装 python 的一些依赖库,我在容器里面安装了依赖库,不想每次都安装这些依赖库,所以我想把这个容器保存成新的镜像。

错误的方法

有两种方式来解决这个问题。
方式一,构建新的 Dockerfile。
方式二,对一个正在运行的容器,通过 commit 来创建新的镜像。

反思

我选择了方式二,我把容器当虚拟机使了,这是没有理解 Docker 设计的哲学。

找了一文章,这文章总结的很好,有利于我去了解 docker 的设计哲学,我就把他翻译在下面。

使用 Docker 不要做的几件事情

所以你最终屈服于容器,发现它们解决了很多问题并且有很多优势

  1. 第一:容器是不可变的——操作系统、库版本、配置、文件夹和应用程序都包含在容器中。您保证在 QA 中测试过的相同镜像将以相同的行为到达生产环境。
  2. 第二:容器是轻量级的——容器的内存占用很小。容器将只为主进程分配内存,而不是数百或数千 MB。
  3. 第三:容器速度快——您可以像启动典型的 Linux 进程一样快地启动容器。您可以在几秒钟内启动一个新容器,而不是几分钟。

然而,许多用户仍然像对待典型的虚拟机一样对待容器,而忘记了容器有一个重要的特性:容器是一次性的。
“容器是短暂的”。

这种特性迫使用户改变他们应该如何处理和管理容器的思维方式;我将解释您应该做的事情以继续发挥容器的最大优势:

分类
命令行

Mac 与 Linux 随机抽样文本文件

有时碰到一个大文件,要对这个文件进行采样,比如采样多少条,发现 linux 和 mac 上都有一个不错的命令,可以对文件进行抽样。

mac 安装 gshuf

gshuf 集成到了 coreutils 里面,通过 brew 直接安装 coreutils 就可以。

brew install coreutils

mac 上使用 gshuf

gshuf -n 20000 full.txt > sample.csv

linux 上使用 shuf 对文本文件采样

shuf -n N input > output

Mac 上使用 gnu 的工具包

brew install coreutils findutils gnu-tar gnu-sed gawk gnutls gnu-indent gnu-getopt grep
分类
命令行

nvm 在 mac 上安装

brew 安装 nvm

brew install nvm

安装完成之后,是不能直接使用的,需要建立一个目录和设置环境亦是

建立目录

mkdir ~/.vim

设置 zsh 环境变量

设置 zsh 的环境变量,我因为用的是 zsh,和 bash 有一些不一样,brew –prefix 可以找到 brew 安装的根目录。

export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh

brew –prefix nvm 返回 nvm 的安装目录。

brew 禁止自动更新

每次运行 brew install 的时候,都会检查更新,特别慢,可以禁止自动更新,也可以设置到环境变量里面。

HOMEBREW_NO_AUTO_UPDATE=1 brew install 

导入到环境变量里面

export HOMEBREW_NO_AUTO_UPDATE=1
分类
命令行

zip 命令行给文件和文件夹设置密码

为什么压缩文件一定要设置密码

  • 防止任何人都可以解压,只让知道的人解压文件。
  • 上传到云端的时候,防止一些不良云厂商。

zip 给文件设置密码

要对文件进行密码保护,只需运行 zip 命令并提供 -e 标志(它是 –encrypt 的缩写)。首先将“目标”(例如 file.zip)传递给它,然后将源(例如文件)传递给它。

zip -e file.zip file
湘ICP备2020020034号-1