摘要: 这篇文章主要介绍Facebook所主导的机器学习框架PyTorch的容器化安装方法,基于HPC环境常用的Singularity高性能容器,并且兼容与结合了Docker容器镜像的生态,非常的友好。在容器化的编程环境中,我们不仅可以避免不同框架对于python库或者系统软件版本的依赖冲突,还可以很大程度上解决因为没有root权限以及网络外访权限的环境下所带来的极大的麻烦,故推荐使用这种方案进行安装和运行。 阅读全文
posted @ 2021-06-15 10:53 DECHIN 阅读(2072) 评论(2) 推荐(0)
摘要: 这篇文章我们主要探讨如何去部署一个基于MindSpore框架的分布式训练环境,在MindSpore环境已经配置好的情况下,我们只需要安装好openmpi和nccl这两个工具就可以实现分布式的训练,在文中我们已经给出了相应的示例。虽然分布式与并行技术的目的是为了提升性能,但不是说对所有的场景都能够起到加速的作用,比如文章中的案例就没有加速的效果。这其实是因为我们的用例场景太简单了,纵观整个训练过程,GPU的使用率不到10%,在这种情况下还要考虑上通信的开销,自然是没有放在同一个卡上去训练来得快。这也给我们一个启发,考虑使用分布式和并行计算的技术时,一定也要先评估好问题本身是否适用于并行化的处理,否则是达不到预期的加速的目的的。 阅读全文
posted @ 2021-06-10 10:54 DECHIN 阅读(1198) 评论(2) 推荐(0)
摘要: 这篇文章主要介绍Singularity容器在Manjaro平台的安装,以及一些常见的使用场景:拉取沙箱制作容器镜像、远程制作容器镜像以及修改容器镜像的方法。总体而言Singularity是一个对非root用户非常友好的容器解决方案,在速度上没有实际测试过,只是在一些场景下可以看到比Docker性能要好一些。而且这个容器还支持非root的安装以及非root的使用方法,当然在基于RH的系统下有一些默认的配置项还是需要用root权限去修改后,才能够用非root的账户使用Singularity容器,最典型的就比如要将`/proc/sys/user/max_user_namespaces`这里面的对应参数配置为非零,否则使用会报错。 阅读全文
posted @ 2021-06-07 15:48 DECHIN 阅读(1369) 评论(0) 推荐(1)
摘要: 本文按照数据流的顺序,分别介绍了:使用sqlite3数据库存储数据、从sqlite3数据库中读取数据、使用从sqlite3数据库中的数据构造MindSpore可识别的训练数据集。对于输入的数据量比较大的场景,我们不太可能将全部的数据都加载到内存中,这就要考虑各种可以快速存储和读取的方案,数据库就是一种比较常见的方案。而sqlite3作为一款非常轻量级的数据库,在大部分的Python3中都是内置的,省去了很多编译安装的繁琐。当然性能表现可能不如其他的数据库,但是在我们这边给定的场景下,表现还是非常优秀的! 阅读全文
posted @ 2021-06-01 17:15 DECHIN 阅读(860) 评论(0) 推荐(0)
摘要: 这篇文章主要介绍了Softplus、Sigmoid、Softmax和Tanh这4种激活函数,激活函数在机器学习领域中主要起到的是一个决策性质的作用,在分类器中有重要的应用价值。而除了这4种激活函数之外,MindSpore还实现了Softsign的激活函数,但是目前只能在昇腾平台上使用,其他的除了Softplus只能在GPU和昇腾平台运行之外,都是全平台支持的(CPU、GPU、昇腾)。 阅读全文
posted @ 2021-05-27 15:42 DECHIN 阅读(997) 评论(0) 推荐(1)
摘要: 本文通过4个测试案例分析了在python中读取文件指定行内容的方案,并得到了一些运行耗时的数据。从需求上来说,如果是对于小规模的数据,比如几百行规模的数据,建议使用readline循环遍历来操作,速度也相当不错,或者是linecache中的函数实现也是可以的,甚至可以直接用readlines将整个文本内容加载到内存中。但是对于数据规模比较大的场景,比如超过了千万行的级别,那么使用sed指令的方式对指定行内容进行读取的方式,应该是所有方式中最快速的。 阅读全文
posted @ 2021-05-24 10:16 DECHIN 阅读(6357) 评论(0) 推荐(0)
摘要: 本文介绍了一个在C++内部调用Python中封装的函数或者接口的方法,从环境配置到具体示例都有讲解,并且在其中包含有不少的坑点,需要一步一步去踩。不同的编程语言具有不同的优势,Python轮子众多而语法简单,上手容易,但是性能比较首先,C++的最明显优势就是在于其性能的天然优越性。但是我们不需要对哪一种编程语言有所偏倚,都有所掌握,并且能够有所互通,利用好各自的优势,才能够发挥最大的价值。 阅读全文
posted @ 2021-05-21 15:58 DECHIN 阅读(2088) 评论(2) 推荐(0)
摘要: 本文简单的介绍了C++中的三种基础操作:逐行读取文件内容、字符串匹配以及运行时间的统计,并且通过一个简单的范例来实现了这三种基本的功能。相比于python而言,C++的代码编写量肯定要多一些,但是考虑到C++可能带来的效率增益,我们也应当了解其基本的用法以及功能实现。 阅读全文
posted @ 2021-05-20 09:47 DECHIN 阅读(5570) 评论(0) 推荐(1)
摘要: 在这篇文章中,我们接着前面的博客继续讲MindSpore在训练好机器学习的模型并且保存成文件之后,如何加载并使用测试集加以验证。从测试结果中我们得到的启发是,机器学习的模型的有效性会很大程度上收到训练集的影响,因此最好是能够保障训练集的广泛性。如果测试集的范围大大超出了训练集所能够表示的范围,那么训练的结果误差就会很大。 阅读全文
posted @ 2021-05-18 14:17 DECHIN 阅读(556) 评论(0) 推荐(0)
摘要: 本文主要介绍了在化学领域中常用的文件格式转化工具Open Babel的两种安装方法,与基本的使用案例。其中如果选择手动编译安装可以使用最新的release版本,如果使用conda就只能使用老旧的稳定版本,但是可以很大程度上简化安装的步骤。在基本的案例中我们演示了使用obabel来将一个xyz坐标格式的文件转化成一个SMILES表达式。 阅读全文
posted @ 2021-05-18 11:01 DECHIN 阅读(21410) 评论(0) 推荐(0)
摘要: 本文主要从工程实现的角度测试了一下MindSpore的机器学习模型保存与加载的功能,通过这个功能,我们可以将自己训练好的机器学习模型发布出去供更多的人使用,我们也可以直接使用别人在更好的硬件体系上训练好的模型,或者应用于迁移学习。 阅读全文
posted @ 2021-05-17 11:50 DECHIN 阅读(840) 评论(0) 推荐(0)
摘要: 本文主要从工程实现的角度,讲解在ProjectQ开源量子计算模拟器框架中,实现量子门操作分解与输出的方法。通过这个方法,可以限制量子指令集的范围,将量子算法中不被支持的量子门操作等价(或近似地)变化到量子硬件体系所支持的量子指令集上。 阅读全文
posted @ 2021-05-15 11:45 DECHIN 阅读(466) 评论(0) 推荐(0)
摘要: 基于前面所介绍的MindSpore框架使用线性神经网络来拟合线性函数的一个方案,这里我们将其推广到多参数、多幂次的函数,甚至是一些初等的函数。但是对于更加复杂的嵌套函数,可能还要思考一下更加普适的解决方案。 阅读全文
posted @ 2021-05-15 10:48 DECHIN 阅读(825) 评论(0) 推荐(0)
摘要: 本文介绍了一款基于python语言的SMILES化学表达式的读写SDK,使用openSMILES表达式所定义的分子结构是非常精简的,但是其中的规则又非常的多,因此使用一款友好的SMILES表达式能够大大的缩减解析的成本。并且pysmiles结合了一款非常常用的python的拓扑网络结构表示SDK——networkx,使得对SMILES表达式的结果分析更加的人性化。 阅读全文
posted @ 2021-05-10 10:54 DECHIN 阅读(2672) 评论(0) 推荐(1)
摘要: 推荐一款在Ubuntu Linux下挺好用的PDF阅读器——Okular 阅读全文
posted @ 2021-05-08 11:20 DECHIN 阅读(1018) 评论(0) 推荐(0)