2016 - 2024

感恩一路有你

gltools使用教程最新 gltools设置教程?

浏览量:4088 时间:2023-05-25 17:12:29 作者:采采

gltools设置教程?

1。打开游戏空间,点击【开始】开始游戏;

2。到达游戏界面,点击右下角的设定人物;

3。单击[画质设置];

4。选择[帧数设置]下的[高];

5。点击右下角的【确认修改】;

6。屏幕上方会显示设置立即生效,表示设置成功。

如何用Docker成为更高效的数据科学家?

使用Docker容器开发机器学习模型有很多优点。最近,GitHub的高级机器学习科学家Hamel Husain发表了一篇关于走向数据科学的入门级Docker容器教程。文章从基本概念入手,清晰地介绍了Docker容器的一些基本操作方法和注意事项。机器之心整理介绍了这篇文章。本文涉及的所有相关代码请访问:_Tutorial。

在过去的五年里,Docker容器成了一个热词,似乎我所有的软件工程师朋友都在用它们开发应用程序。我想知道这项技术如何让我变得更高效,但我发现我在网上找到的教程要么太详细(解释了一些我作为数据科学家永远不会使用的功能),要么太简单(没有足够的信息来帮助我理解如何快速有效地使用Docker)。

所以我写了这个快速入门,让你不用自己去网上筛选资料,就能快速学会Docker入门所需的一切。

Docker是什么?

你可以把Docker想象成一个轻量级的虚拟机——它包含了运行应用程序所需的一切。Docker容器可以获取系统状态的快照,以便其他人可以使用该快照快速重建您的计算环境。这是本教程中您需要知道的全部内容。有关更多详情,请参考:

为什么要用Docker?

1.重现性:作为一名专业的数据科学家,让你的结果具有重现性是非常重要的。再现性不仅有助于同行评审,还可以确保您创建的模型、应用程序或分析可以无障碍地运行,从而使您交付的结果更加稳健,经得起时间的考验。例如,如果你用Python创建一个模型,仅仅运行pip freeze并把结果requirements.txt文件发送给你的同事是不够的,因为它只包含特定于Python的依赖关系——但实际上,依赖关系不仅仅是Python,还有操作系统、编译器、驱动程序、配置文件以及你的代码成功运行所需的其他数据。即使只分享Python依赖,也能成功。将所有内容封装在Docker容器中仍然可以缓解这个问题。别人的负担,重建你的环境,让他们更容易获得你的成就。

2.计算环境的可移植性:作为一名数据科学家,尤其是在机器学习领域,快速改变你的计算环境的能力可以极大地影响你的生产力。数据科学的初始工作通常是原型设计、探索和研究——这些任务不一定立即需要特定的计算资源。这项工作通常在笔记本电脑或个人电脑上完成。但在未来的某个时候,你将经常需要不同的计算资源来显著加快你的工作流——例如,使用更多的CPU或强大的GPU来执行深度学习等任务。我见过许多数据科学家将自己限制在本地计算环境中,因为他们感到在远程机器上重建本地环境的困难。Docker可以移植你的环境(你所有的库和文件等)。)很简单。在Kaggle竞争中,快速移植计算环境也是一个巨大的竞争优势,因为你可以经济高效地使用AWS宝贵的计算资源。最后,创建Docker文件允许您移植许多您喜欢的本地环境配置——比如bash别名或vim插件。

3.加强你的工程能力:熟练使用Docker可以让你将模型或分析部署到应用程序中(比如提供预测的REST API),这样别人也可以使用你的结果。此外,您可能需要与数据科学工作流中Docker容器中的其他应用程序进行交互,例如数据库。

码头术语

在我们继续之前,它 熟悉Docker 的术语:

图像:它是你想要创造的蓝图。比如:Ubuntu TensorFlow,带NVIDIA驱动,运行Jupyter服务器。

容器:它是你实现的运行映像的实例化。您可以运行同一图像的多个副本。区分镜像和容器的区别非常重要,因为这是初学者经常混淆的两个概念。如果你不 如果你不知道镜子和容器的区别,停下来再读一遍。

Dockerfile:创建镜像的方法。Dockerfile包含特殊的Docker语法。官方文档说:Dockerfile是一个文本文档,包含了用户可以在命令行调用的所有命令,组装成镜像。

提交:与git类似,Docker容器提供版本控制。通过commit所做的更改,您可以随时将Docker容器的状态保存为新的映像。

Docker Hub/Image Registry:人们可以公开(或私下)发布。Docker镜像用于促进合作和共享。

层:对现有图像的修改,由docker文件中的指令指示。将图层应用于基础图像,以创建最终图像。

这些术语将在本文中使用。如果你在阅读时忘记了它们,一定要检查回来!这些术语很容易混淆,尤其是在镜像和容器之间——所以你在阅读的时候要警惕!

安装Docker

您可以从以下网址免费下载并安装Docker社区版:

创建你的第一个码头工人形象。

在创建Docker容器之前,创建一个用于定义镜像的Docker文件是很有用的。让 下面我们来慢慢解读Dockerfile。您也可以在与本教程相关的GitHub库中找到该文件:

# referenc: _/Ubuntu/

来自ubuntu:16.04

#将元数据作为键值对示例标签版本1.0添加到图像中

标签维护者Hamel Husain

# #设置环境变量

环境。ALLC UTF路8号。UTF-8

运行apt-get update-fix-missing amp apt-get install-y wget bzip2 ca-certificates

构建-基本

byobu

卷曲

git核心

htop

pkg-配置

python3-dev

python-pip

python-setuptools

python-virtualenv

拉开…的拉链

放大器

apt-get干净的ampamp

rm -rf /var/lib/apt/lists/*

运行echo导出路径/opt/conda/bin:$PATH gt ampamp

wget - quiet _ -O ~ ampamp

/bin/bash ~ -b -p /opt/conda ampamp

rm ~

ENV PATH/opt/conda/bin: $小路

运行pip - no-cache-dir安装-升级

多重处理

sk learn-熊猫

#为Jupyter打开端口

暴露7745

#安装文件系统

运行mkdir ds

环境主页/ds

环境外壳/bin/bash

体积/密度

工作目录/ds

添加运行_/ds/运行_

运行chmod x /ds/run_

#运行外壳

CMD [。/run_]

FROM语句

来自ubuntu:16.04

FROM语句包含了Docker最神奇的部分。该语句指定了您想要在其上创建的基本图像。通过使用FROM来指定一个基本映像,Dock:16.04的映像——如果它不存在。;如果找不到,它将搜索您指定的Docker注册表,默认为DockerHub:。如果你需要经常在你的Ubuntu和其他操作系统上安装程序,这种分层机制非常方便。你不 不用费心从头安装Ubuntu,但你可以直接在官方Ubuntu镜像上开发!DockerHub托管各种各样的映像,包括那些不仅提供操作系统的映像。例如,如果您想要一个安装了Anaconda的容器,您可以选择在官方的Anaconda Dock:16.04作为基图,它将搜索名为ubuntu (_/ubuntu/)的DockerHub库。映像名称后面的16.04部分是一个标记,它指定了您要安装的基础映像的版本。如果你搜索Ubuntu DockerHub库,你会注意到不同版本的Ubuntu对应不同的标签:

2017年12月Ubuntu Dock:16.04,Ubuntu : x:x:latest都是指Ubuntu 16.04版本,都是同一个镜像的别名。此外,这里提供的链接指向相应的Dockerfile,它可以用来构建每个版本的映像。有时你可以 t在DockerHub中找不到Docker文件,因为维护人员可以选择是否包含关于这些映像是如何创建的Docker文件。个人觉得看一些Dockerfile是有助于更好的理解Dock:lat:16.04为什么?仔细看,可以看到:latest与16.04相关联。

关于Docker镜像需要注意的最后一点:从DockerHub拉随机Docker镜像时做出明智的判断恶意人士创建的拉映像可能包含恶意软件。

标签语句

这条语句将向您的图像添加元数据,它是完全可选的。加这句话的目的是让别人知道我可以联系谁,也方便我搜索我的Docker容器,尤其是一个服务器上同时运行多个容器的时候。

标签维护者Hamel Husain ltyouremailgt

ENV语句

环境。ALLC UTF路8号。UTF-8

这允许您修改环境变量,而且非常简单。请参考:

运行语句

这通常是最需要努力的地方,并给出了在构建Docker映像时要完成的任务。您可以运行任何shell命令(如apt-get和pip install)来安装您需要的软件包和依赖包。

运行apt-get update-fix-missing amp apt-get install-y wget bzip2

构建-基本

ca证书

git核心

...

在这里我安装了一些我喜欢的实用工具,比如curl和h。Top,byobu,然后安装了Anaconda,然后安装了一些基本Anaconda中没有的其他库(可以在完整的Dockerfile中看到其他RUN语句)。

RUN语句后面的命令和Docker没有任何关系,只是你在安装这些软件包时需要运行的一些正常的Linux命令,所以不要 即使你不熟悉这些软件包或Linux命令,也不用担心。另外,再提一个建议:我刚开始学习Docker的时候,在GitHub或者DockerHub上看其他的Docker文件,然后把我需要的复制粘贴到我的Docker文件中。

您可能已经注意到了RUN语句的格式。为了可读性,每个库或软件包都整齐地缩进并按字母顺序排序。这是Dockerfile的常用做法,建议你也这样做,以便合作。

暴露语句

如果您想要公开一个端口——例如,如果您从容器或网络服务中实现一个Jupyter Notebook,那么这个语句非常有用。码头工人 的文档很好地解释了EXPOSE语句:

EXPOSE指令实际上并不发布端口。它的功能是作为创建图像的人和运行容器的人之间的一种文档,内容是关于要发布的端口。要实际发布端口,您必须在docker run上使用-p标志,并在运行容器时映射一个或多个端口,或者您可以使用-P标志发布所有端口,并将它们映射到更高级的端口。

数量报表

体积/密度

这个语句允许你在Docker容器和主机之间共享数据。VOLUME语句允许您安装外部安装的卷。主机目录仅在容器运行时声明(因为您可能在不同的计算机上运行容器),而在定义映像时不声明。目前,您只需在Docker容器中指定想要与主机容器共享的文件夹的名称。

Docker用户指南解释道:

主机目录是在容器运行时声明的:主机目录(挂载点)本质上依赖于主机。这是为了确保映像的可移植性,因为不能保证给定的主机目录对所有主机都可用。出于这个原因,你可以 不要在Dockerfile中挂载主机目录。卷指令不支持指定host-dir参数。创建或运行容器时,必须指定一个装载点。

此外,这些卷的目的是在容器的文件系统之外保存数据,这在您必须操作大量数据时非常有用。;我不希望你的形象大大扩大。当您保存码头时Er映像,这个卷目录中的任何数据都不会保存为映像的一部分,但是这个容器目录之外的数据会被保存。

工作目录语句

工作目录/ds

此语句设置工作目录,以便您可以在另一个命令中索引特定文件,而无需使用绝对路径。例如,这个docker文件中的最后一句话是:

CMD [";。/run_";]

该语句假定默认情况下工作目录是/ds。

添加语句

添加运行_/ds/运行_

此命令允许您在Docker容器运行时将文件从主机复制到Docker容器。我使用这个命令来执行bash脚本并导入有用的东西,比如。bachrc文件到容器中。

请注意,这里没有完全指定主机容器的路径,因为它的主机路径是您在容器运行时指定的上下文目录的相对路径(稍后讨论)。

当我运行这个容器时,run_就在后台路径的根目录下,所以在源文件之前没有路径。

用户指南说:

添加

ADD指令从ltsrcgt复制新文件、目录或远程文件URL,并将它们添加到路径ltdestgt的镜像文件系统中。

CMD语句

Docker容器的设计思想是,这些容器是短命的,它足以保证你要运行的应用程序完成。但是在数据科学中,我们经常希望让这些容器一直运行,即使其中没有任何活动的东西在运行。许多人通过运行bash shell(它赢了 不停止就不要停止。

CMD [";。/run_";]

在上面的命令中,我运行了一个shell脚本,该脚本实例化了一个Jupyter笔记本服务器。然而,如果你不 如果没有任何特定的应用程序要运行,并且只想让容器保持运行(不退出),可以直接运行bash shell,只需使用以下命令:

CMD [/bin/bash]

这种方法是有效的,因为bash shell不会终止,除非您退出;因此,容器将一直保持运行。

用户指南说:

docker文件中只能有一条CMD指令。如果您列出了多个CMD,则只有最后一个有效。

CMD的主要目的是为执行容器提供默认配置。这些默认配置可能包含一个可执行文件,或者可执行文件可能被省略,在这种情况下,您还必须指定一个ENT。RYPOINT命令。

在创建Docker镜像Docker文件的过程中有如此多的信息。唐 别担心,后面的部分相对简单。现在我们已经在Dockerfile中创建了我们的食谱。;是时候创建一个镜像了。您可以通过以下命令完成此操作:

还有:_ tutorial/blob/master/basic _ tutorial/build _ on GitHub。

这创建了一个Docker映像(不是容器;如果你不 I don'我记不起这两者之间的区别,请查阅文章前面的词汇表。您可以稍后运行此镜像。

从你的Docker镜像创建并运行容器,现在你已经准备好让它工作了!我们可以通过执行以下命令来启动环境:

GitHub还有:_ tutorial/blob/master/basic _ tutorial/run _。

运行此命令后,您的容器将运行!Jupyter服务器也在运行,因为docker文件的末尾有这个命令:

CMD [";。/run_";]

现在你应该可以通过它使用的端口访问你的Jupyt: 7745/,密码是tutorial。如果您远程运行这个Docker容器,您还必须设置本地端口转发,以便您可以通过浏览器访问您的Jupyter服务器。端口转发简介:

与容器交互一旦容器设置好并运行,以下命令就很有用:

将新的终端会话附加到容器。如果您需要安装一些新软件或使用shell,这将非常有用。

将容器的状态保存为新图像。即使一开始就在Dockerfile中配置了所有想要安装的库,随着时间的推移,你可能仍然需要对容器的状态进行很大的调整——通过交互添加更多的库和软件包。将容器的状态保存为镜像非常有用。您可以稍后共享或向其添加图层。您可以使用docker commit CLI命令将容器状态保存为新映像:

docker commit lt contain:标签名(可选)

比如我想把一个名为contain: v2

你可能想知道镜像名称前的hamelsmu/是什么——这只是为了以后更方便地将容器推送到DockerHub,因为hamelsmu是我的DockerHub用户名(这个我们后面会讲到)。如果你想在工作中使用Docker,你的公司很可能有一个内部私有的Docker库,你也可以把你的Docker推送到那里。

列出运行中的容器。当我忘记了正在运行的容器的名称时,我经常使用这个命令:

docker ps -a -f状态运行

如果您使用此命令而不添加statusrunning,您将看到系统上所有容器的列表(甚至包括那些不再运行的容器)。这对于寻找旧容器很有用。

列出您保存在本地的所有图像。

docker图像

将你的图片推送到DockerHub(或其他地方)。如果您想要与其他人共享您的工作或将图像保存到云中,此命令非常有用。这样做的时候注意不要分享任何私人信息(DockerHub上也有私人库)。

首先,创建一个DockerHub库并给你的库取一个合适的名字,参考这里。然后运行docker login命令,连接到您在DockerHub或其他注册位置的帐户。例如,要将一个图像推送到这个容器(),我必须首先调用我的本地图像命令hamelsmu/tutorial(我可以选择任何标记名)。例如,此CLI命令为:

dock: v2

将前面提到的Docker镜像推送到这个库中,其标签为v2,引用:。需要指出的是,如果你公开了你的图片,别人可以直接给你的图片添加图层,就像我们在本教程中给ubuntu image添加图层一样。这对想要复制或扩展你的研究的其他人非常有用。

你已经掌握了。现在您已经知道如何操作Docker,您可以执行以下任务:

与同事和朋友分享可重复的研究。

通过将您的代码临时迁移到您需要的更大的计算环境中,不间断地赢得Kaggle竞赛。

在笔记本电脑上的Docker容器中进行本地原型开发。然后毫不费力地将相同的计算过程无缝地迁移到服务器,同时保留您喜欢的本地环境配置(您的别名、vim插件、bash脚本、自定义提示等。).

使用Nvidia-Docker快速实例化在GPU计算机上运行TensorFlow、PyTorch或其他深度学习库所需的所有依赖包。如果从零开始,过程会很艰难。)看后面的彩蛋。

将您的模型发布为应用程序,例如从Docker容器提供预测的REST API。当你的应用是Docker的时候,你可以根据需要轻松的随意复制。

进阶阅读到这里,我们只学到了Docker的一点皮毛,还有很多值得掌握的东西。我很关注Docker领域,我觉得数据科学家会经常遇到。希望这篇文章能给你足够的信心开始使用。以下资源对我的码头之旅有所帮助:

有用的Docker命令:_docker_containers/

更有用的Docker命令:

Dockerfile文件参考:

如何在DockerHub上创建和推送库;

彩蛋:Nvidia-Docker我学习Docker最早的原因是在单个GPU上进行深度学习模型的原型化,然后在需要更多计算资源的时候迁移到AWS。我也在研究杰瑞米·霍华德 的优秀课程()并想与他人分享我的原型设计。

然而,包括所有的依赖包,如NVIDIA GPU的驱动程序,你可以 不要用Docker,而要用Nvidia-Docker()。这比使用普通的Docker需要更多的努力,但是只要你理解Docker,它 这很容易做到。

我把我的Nvidia-Docker设置放在这里:_ tutorial/tree/master/GPU _ tutorial。你可以用这个练习。

Docker 容器 数据 映像 环境

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。