Avimanyu Bandyopadhyay 发布的文章

最近我们刚为开设了一个新的“科学类”的文章分类。其中发表的最新一篇文章名为:开源是怎样影响科学的。在这篇文章中我们主要讨论了 NASA 的积极努力,这些努力包括他们通过开源实践来促进科学研究的积极作用。

NASA 是怎样使用开源手段促进科学研究的

NASA 将他们的整个研究库对整个公共领域开放,这是一项壮举

没错!每个人都能访问他们的整个研究库,并能从他们的研究中获益。

他们现已开放的资料可以大致分为以下三类:

  • 开源 NASA
  • 开放 API
  • 开放数据

1、开源 NASA

这里有一份 GitHub 的联合创始人之一和执行总裁 Chris Wanstrath 的采访,他向我们介绍道,一切都是从很多年前开始的。

该项目名为 “code.nasa.gov”,截至本文发表为止,NASA 已经通过 GitHub 开源了 365 个科学软件(LCTT 译注:本文原文发表于 2018/3/28,截止至本译文发布,已经有 454 个项目了)。对于一位热爱程序的开发者来说,即使一天研究一个软件,想把 NASA 的这些软件全部研究过来也要整整一年的时间。

即使你不是一位开发者,你也可以在这个门户网站浏览这个壮观的软件合集。

其中就有阿波罗 11 号的制导计算机的源代码。阿波罗 11 号空间飞行器首次将两名人类带上月球,分别是 Neil ArmstrongEdwin Aldrin 。如果你对 Edwin Aldrin 感兴趣,可以点击这里了解更多。

NASA 开源代码促进会使用的开源代码许可

它们采用了几种开源许可证,其分类如下:

2、开放 API

开放 API 在推行开放科学中起到了很大作用。与开源促进会类似,对于 API,也有一个 开放 API 促进会。下面这张示意图可以告诉你 API 是怎样将应用程序和它的开发者连接起来的。

记得点击这个链接看看。链接内的文章使用了简单易懂的方法解读了 API ,文末总结了五大要点。

这会让你感受到专有 API 和开放 API 会有多么大的不同。

NASA 的 Open API 主要针对应用程序开发者,旨在显著改善数据的可访问性,也包括图片内容在内。该网站有一个实时编辑器,可供你调用每日天文一图(APOD) 的 API。

3、开放数据

我们发布的第一篇开放科学的文章中,我们在“开放科学”段落下提到的三个国家 —— 法国、印度和美国的多种开放数据形式。NASA 有着类似的想法和行为。这种重要的意识形态已经被多个国家所接受。

NASA 的开放数据门户致力于开放,拥有不断增长的可供大众自由使用的开放数据。将数据集纳入到这个数据集对于任何研究活动来说都是必要且重要的。NASA 还在他们的门户网站上征集各方的数据需求,以一同收录在他们的数据库中。这一举措不仅是领先的、创新的,还顺应了数据科学AI 和深度学习的趋势。

下面的视频讲的是学者和学生们是怎样通过大量研究得出对数据科学的定义的。这个过程十分的激动人心。瑞尔森大学罗杰斯商学院的 Murtaza Haider 教授在视频结尾中提到了开源的出现对数据科学的改变,尤其让是旧有的闭源方式逐渐变得开放。而这也确实成为了现实。

现在任何人都能在 NASA 上征集数据。正如前面的视频中所说,NASA 的举措很大程度上与征集和分析优化数据有关。

你只需要免费注册即可。考虑到论坛上的公开讨论以及数据集在可能存在的每一类分析领域中的重要性,这一举措在未来会有非常积极的影响,对数据的统计分析当然也会大幅进展。在之后的文章中我们还会具体讨论这些细节,还有它们和开源模式之间的相关性。

以上就是对 NASA 开放科学模式的一些探索成就,希望您能继续关注我们接下来的相关文章!


via: https://itsfoss.com/nasa-open-science/

作者:Avimanyu Bandyopadhyay 选题:lujun9972 译者:Valoniakim 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LinuxBoot 是私有的 UEFI 固件的开源 替代品。它发布于去年,并且现在已经得到主流的硬件生产商的认可成为他们产品的默认固件。去年,LinuxBoot 已经被 Linux 基金会接受并纳入开源家族。

这个项目最初是由 Ron Minnich 在 2017 年 1 月提出,它是 LinuxBIOS 的创造人,并且在 Google 领导 coreboot 的工作。

Google、Facebook、Horizon Computing Solutions、和 Two Sigma 共同合作,在运行 Linux 的服务器上开发 LinuxBoot 项目(以前叫 NERF)。

它的开放性允许服务器用户去很容易地定制他们自己的引导脚本、修复问题、构建他们自己的 运行时环境 和用他们自己的密钥去 刷入固件,而不需要等待供应商的更新。

下面是第一次使用 NERF BIOS 去引导 Ubuntu Xenial 的视频:

我们来讨论一下它与 UEFI 相比在服务器硬件方面的其它优势。

LinuxBoot 超越 UEFI 的优势

LinuxBoot vs UEFI

下面是一些 LinuxBoot 超越 UEFI 的主要优势:

启动速度显著加快

它能在 20 秒钟以内完成服务器启动,而 UEFI 需要几分钟的时间。

显著的灵活性

LinuxBoot 可以用在 Linux 支持的各种设备、文件系统和协议上。

更加安全

相比 UEFI 而言,LinuxBoot 在设备驱动程序和文件系统方面进行更加严格的检查。

我们可能争辩说 UEFI 是使用 EDK II 而部分开源的,而 LinuxBoot 是部分闭源的。但有人提出,即便有像 EDK II 这样的代码,但也没有做适当的审查级别和像 Linux 内核 那样的正确性检查,并且在 UEFI 的开发中还大量使用闭源组件。

另一方面,LinuxBoot 有非常小的二进制文件,它仅用了大约几百 KB,相比而言,而 UEFI 的二进制文件有 32 MB。

严格来说,LinuxBoot 与 UEFI 不一样,更适合于可信计算基础

LinuxBoot 有一个基于 kexec 的引导加载器,它不支持启动 Windows/非 Linux 内核,但这影响并不大,因为主流的云都是基于 Linux 的服务器。

LinuxBoot 的采用者

自 2011 年, Facebook 发起了开源计算项目(OCP),它的一些服务器是基于开源设计的,目的是构建的数据中心更加高效。LinuxBoot 已经在下面列出的几个开源计算硬件上做了测试:

  • Winterfell
  • Leopard
  • Tioga Pass

更多 OCP 硬件在这里有一个简短的描述。OCP 基金会通过开源系统固件运行一个专门的固件项目。

支持 LinuxBoot 的其它一些设备有:

上个月底(2018 年 9 月 24 日),Equus 计算解决方案 宣布 发行它的 白盒开放式™ M2660 和 M2760 服务器,作为它们的定制的、成本优化的、开放硬件服务器和存储平台的一部分。它们都支持 LinuxBoot 灵活定制服务器的 BIOS,以提升安全性和设计一个非常快的纯净的引导体验。

你认为 LinuxBoot 怎么样?

LinuxBoot 在 GitHub 上有很丰富的文档。你喜欢它与 UEFI 不同的特性吗?由于 LinuxBoot 的开放式开发和未来,你愿意使用 LinuxBoot 而不是 UEFI 去启动你的服务器吗?请在下面的评论区告诉我们吧。


via: https://itsfoss.com/linuxboot-uefi/

作者:Avimanyu Bandyopadhyay 选题:oska874 译者:qhwdw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Facebook 在人工智能项目中广泛使用自己的开源 AI 框架 PyTorch,最近,他们已经发布了 PyTorch 1.0 的预览版本。

如果你尚不了解,PyTorch 是一个基于 Python 的科学计算库。

PyTorch 利用 GPU 超强的运算能力 来实现复杂的 张量 计算 和 深度神经网络。 因此, 它被世界各地的研究人员和开发人员广泛使用。

这一新的可以投入使用的 预览版 已于 2018 年 10 月 2 日周二在旧金山 The Midway 举办的 PyTorch 开发人员大会 宣布。

PyTorch 1.0 候选版本的亮点

PyTorhc is Python based open source AI framework from Facebook

候选版本中的一些主要新功能包括:

1、 JIT

JIT 是一个编译工具集,使研究和生产更加接近。 它包含一个基于 Python 语言的叫做 Torch Script 的脚本语言,也有能使现有代码与它自己兼容的方法。

2、 全新的 torch.distributed 库: “C10D”

“C10D” 能够在不同的后端上启用异步操作, 并在较慢的网络上提高性能。

3、 C++ 前端 (实验性功能)

虽然它被特别提到是一个不稳定的 API (估计是在预发行版中), 这是一个 PyTorch 后端的纯 C++ 接口, 遵循 API 和建立的 Python 前端的体系结构,以实现高性能、低延迟的研究和开发直接安装在硬件上的 C++ 应用程序。

想要了解更多,可以在 GitHub 上查看完整的 更新说明

第一个 PyTorch 1.0 的稳定版本将在夏季发布。(LCTT 译注:此信息可能有误)

在 Linux 上安装 PyTorch

为了安装 PyTorch v1.0rc0, 开发人员建议使用 conda, 同时也可以按照本地安装页面所示,使用其他方法可以安装,所有必要的细节详见文档。

前提

  • Linux
  • Pip
  • Python
  • CUDA (对于使用 Nvidia GPU 的用户)

我们已经知道如何安装和使用 Pip,那就让我们来了解如何使用 Pip 安装 PyTorch。

请注意,PyTorch 具有 GPU 和仅限 CPU 的不同安装包。你应该安装一个适合你硬件的安装包。

安装 PyTorch 的旧版本和稳定版

如果你想在 GPU 机器上安装稳定版(0.4 版本),使用:

pip install torch torchvision

使用以下两个命令,来安装仅用于 CPU 的稳定版:

pip install http://download.pytorch.org/whl/cpu/torch-0.4.1-cp27-cp27mu-linux_x86_64.whl
pip install torchvision

安装 PyTorch 1.0 候选版本

使用如下命令安装 PyTorch 1.0 RC GPU 版本:

pip install torch_nightly -f https://download.pytorch.org/whl/nightly/cu92/torch_nightly.html

如果没有GPU,并且更喜欢使用 仅限 CPU 版本,使用如下命令:

pip install torch_nightly -f https://download.pytorch.org/whl/nightly/cpu/torch_nightly.html

验证 PyTorch 安装

使用如下简单的命令,启动终端上的 python 控制台:

python

现在,按行输入下面的示例代码以验证您的安装:

from __future__ import print_function
import torch
x = torch.rand(5, 3)
print(x)

你应该得到如下输出:

tensor([[0.3380, 0.3845, 0.3217],
 [0.8337, 0.9050, 0.2650],
 [0.2979, 0.7141, 0.9069],
 [0.1449, 0.1132, 0.1375],
 [0.4675, 0.3947, 0.1426]])

若要检查是否可以使用 PyTorch 的 GPU 功能, 可以使用以下示例代码:

import torch
torch.cuda.is_available()

输出结果应该是:

True

支持 PyTorch 的 AMD GPU 仍在开发中, 因此, 尚未按报告提供完整的测试覆盖,如果您有 AMD GPU ,请在这里提出建议。

现在让我们来看看一些广泛使用 PyTorch 的研究项目:

基于 PyTorch 的持续研究项目

领先的 GPU 制造商英伟达在更新这方面最近的发展,你也可以阅读正在进行的合作的研究。

我们应该如何应对这种 PyTorch 的能力?

想到 Facebook 在社交媒体算法中应用如此令人惊叹的创新项目, 我们是否应该感激这一切或是感到惊恐?这几乎是天网)! 这一新改进的发布的 PyTorch 肯定会推动事情进一步向前! 在下方评论,随时与我们分享您的想法!


via: https://itsfoss.com/pytorch-open-source-ai-framework/

作者:Avimanyu Bandyopadhyay 选题:lujun9972 译者:distant1219 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

简介:这篇详细的指南将向你展示如何在 Linux 和 Windows 之间共享 Steam 的游戏文件以节省下载的总用时和下载的数据量。我们将展示给你它是怎样为我们节约了 83% 的数据下载量。

假如你决心成为一名 Linux 平台上的玩家,并且在 Steam 上拥有同时支持 Linux 和 Windows 平台的游戏,或者基于同样的原因,拥有双重启动的系统,则你可以考虑看看这篇文章。

我们中的许多玩家都拥有双重启动的 Linux 和 Windows。有些人只拥有 Linux 系统,但同时拥有当前还没有被 Linux 平台上的 Steam 支持的游戏。所以我们同时保留这两个系统以便我们可以在忽略平台的前提下玩我们喜爱的游戏。

幸运的是 Linux 游戏社区应运而生,越来越多在 Windows 平台上受欢迎的 Steam 游戏也发布在 Linux 平台上的 Steam 中。

我们中的许多人喜欢备份我们的 Steam 游戏,使得我们不再苦苦等待游戏下载完成。这些游戏很大程度上是 Windows 平台下的 Steam 游戏。

现在,很多游戏也已经登陆了 Linux 平台上的 Steam,例如 奇异人生 Life is Strange 古墓丽影 2013 Tomb Raider 2013 中土世界:魔多阴影 Shadow of Mordor 幽浮:未知敌人 XCOM: Enemy Unknown 、幽浮 2、 与日赛跑 Race The Sun 公路救赎 Road Redemption 燥热 SUPERHOT 等等,并且这份名单一直在增长。甚至还有 杀出重围:人类分裂 Deus Ex: Mankind Divided 疯狂的麦克斯 Mad Max !!!在一些游戏的 Windows 版发布之后,现在我们不必再等候多年,而只需等待几月左右,便可以听到类似的消息了,这可是大新闻啊!

下面的实验性方法将向你展示如何使用你现存的任何平台上游戏文件来在 Steam 上恢复游戏的大部分数据。对于某些游戏,它们在两个平台下有很多相似的文件,利用下面例子中的方法,将减少你在享受这些游戏之前的漫长的等待时间。

在下面的方法中,我们将一步一步地尝试利用 Steam 自身的备份与恢复功能或者以手工的方式来达到我们的目的。当涉及到这些方法的时候,我们也将向你展示这两个平台上游戏文件的相同和不同之处,以便你也可以探索并做出你自己的调整。

下面的方法中,我们将使用 Ubuntu 14.04 LTS 和 Windows 10 来执行备份与恢复 Steam 的测试。

1、Steam 自身的备份与恢复

当我们尝试使用 Windows 平台上 Steam 中《 燥热 SUPERHOT 》这个游戏的备份(这些加密文件是 .csd 格式)时,Linux 平台上的 Steam 不能识别这些文件,并重新开始下载整个游戏了!甚至在做了验证性检验后,仍然有很大一部分文件不能被 Steam 识别出来。我们在 Windows 上也做了类似的操作,但结果是一样的!

现在到了我们用某些手工的方法来共享 Windows 和 Linux 上的 Steam 游戏的时刻了!

2、手工方法

首先,让我们先看看 Linux 下这些游戏文件所处的位置(用户目录在 /home 中):

这是 Linux 平台上 Steam 游戏的默认安装位置。 .local.steam 目录默认情况下是不可见的,你必须将它们显现出来。我们将推荐使用一个自定义的 Steam 安装位置以便更容易地处理这些文件。这里 SUPERHOT.x86_64 是 Linux 下原生的可执行文件,与 Windows 中的 .exe 文件类似。

下图展示的位置包含我们需要的大部分文件(在 Windows 和 Linux 平台上相同):

下面我们来看看这些 .acf 格式的文件。appmanifest_322500.acf 便是那个我们需要的文件。编辑并调整这个文件有助于 Steam 识别在 common 这个目录下现存的非加密的原始文件备份:

为了确认这个文件是一样的,用编辑器打开这个文件并检查它。我们越多地了解这个文件越好。这个链接是来自 Steam 论坛上的一个帖子,它展示了这个文件的主要意义。它类似于下面这样:

“AppState”
{
“appid”        “322500”
“Universe”        “1”
“name”        “SUPERHOT”
“StateFlags”        “4”
“installdir”        “SUPERHOT”
“LastUpdated”        “1474466631”
“UpdateResult”        “0”
“SizeOnDisk”        “4156100762”
“buildid”        “1234395”
“LastOwner”       “<SteamID>”
“BytesToDownload”        “909578688”
“BytesDownloaded”        “909578688”
“AutoUpdateBehavior”        “0”
“UserConfig”
{
“Language”        “english”
}
“MountedDepots”
{
“322503”        “1943012315434556837”
}
}

在 Linux 平台上卸载游戏后我们再进行测试。现在让我们看看在 Windows 10 上相同的游戏安装目录里包含哪些内容:

我们复制了 SUPERHOT 目录和 .acf 格式的清单文件(这个文件在 Windows 的 Steam 上格式是一样的)。在复制 .acf 文件和游戏目录到 Linux 中 Steam 它们对应的位置时,我们需要确保 Steam 没有在后台运行。

在转移完成之后,我们运行 Steam 并看到了这个:

所以下图显示只需要有 235.5 MB 的文件需要下载,而不是整个 867.4 MB,这意味着超过 70% 的文件已经被 Steam 识别了:) !相对来说,节省了一笔大量的时间开销。当然不同的游戏可能有所不同,但对于那些网速居于平均水平或以下的玩家来说,这种方法绝对值得一试,尤其是考虑到当前那些 40-50 GB 大小的重量级游戏。

我们还进行了其他几种尝试:

  • 我们尝试使用 Linux 下原有的清单文件(.acf)和来自 Windows 的手工备份文件,但结果是 Steam 重新开始下载游戏。
  • 我们看到当我们将 SUPERHOT_Data 这个目录中的 SH_Data 更换为 Windows 中的对应目录时,同上面的一样,也重新开始下载整个游戏。

理解清单目录的一个尝试

清单目录绝对可以被进一步地被编辑和修改以此来改善上面的结果,使得 Steam 检测出尽可能多的文件。

在 Github 上有一个项目,包含一个可以生成这些清单文件的 python 脚本。任何 Steam 游戏的 AppID 可以从SteamDB 上获取到。知晓了游戏的 ID 号后,你便可以用你喜爱的编辑器以下面的格式创建你自己的清单文件 appmanifest_<AppID>.acf。在上面手工方法中,我们可以看到 SUPERHOT 这个游戏的 AppID 是 322500,所以对应的清单文件名应该是 appmanifest_322500.acf

下面以我们知晓的信息来尝试对该文件进行一些解释:

“AppState”                                   // 应用(游戏)的状态
“appid”        “322500”                    // 游戏的 AppID
“Universe”        “1”
“name”        “SUPERHOT”                   // 游戏的名称
“StateFlags”        “4”
“installdir”        “SUPERHOT”             // 安装目录的名称
“LastUpdated”        “1474466631”
“UpdateResult”        “0”
“SizeOnDisk”        “4156100762”
“buildid”        “1234395”
“LastOwner”        “<SteamID>”             // 唯一的帐号拥有者的 <SteamID> 
“BytesToDownload”        “909578688”       // 将这个数字除以 1073741824(1024 x 1024 x 1024) 便可以计算出还需要下载的数据大小,以 GB 记。
“BytesDownloaded”        “909578688”       // 已下载数据的大小, 以 Bytes 记。
“AutoUpdateBehavior”        “0”            // 当这个设为 0 时,该游戏将自动升级。

“UserConfig”                                 // 用户的配置信息
{
“Language”        “english”
}
“MountedDepots”                              //  这个部分大多与游戏的 DLC 相关。
{
“322503”        “1943012315434556837”
}
}

通过计算下载的数据的大小,你可以将它与 Steam 展现的信息进行比较并进行更多的调整。

假如你知道更多关于清单文件或者手工方式中另外可以改进的方法,请在评论中分享给大家。我们打算去发现更多的关于这些文件格式的信息,当前在官方的 Valve 开发者社区 或者 Steam 论坛 上我们还没有发现完整的文档。

至少现在为止,这些便是我们知道的在 Linux 和 Windows 之间分享 Steam 游戏的最好方法了。


via: https://itsfoss.com/share-steam-files-linux-windows/

作者:Avimanyu Bandyopadhyay 译者:FSSlc 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出