前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Conda 为什么越来越慢?

Conda 为什么越来越慢?

作者头像
章鱼猫先生
发布于 2021-10-15 05:01:48
发布于 2021-10-15 05:01:48
3.6K00
代码可运行
举报
文章被收录于专栏:BioIT爱好者BioIT爱好者
运行总次数:0
代码可运行

作者:生信宝典 | 生信宝典公众号 原文:https://mp.weixin.qq.com/s/OkOgN4j44MHNt1_noPVpzA

Conda 为什么越来越慢?

Conda 中包含的软件越来越多,而且软件的不同版本都保留了下来,软件的索引文件越来越大,安装一个新软件时搜索满足环境中所有软件依赖的软件的搜索空间也会越来越大,导致solving environment越来越慢。

Conda 是如何工作的?

  1. 从设定的通道(channel)处下载通道中所有软件的索引信息(repodata.json)(Collecting package metadata (repodata.json))。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"packages" : {
 "moto-1.3.7-py_0.tar.bz2" : {
   "build" : "py_0",
   "build_number" : 0,
   "depends" : [ "aws-xray-sdk !=0.96,>=0.93", "backports.tempfile", "boto >=2.36.0", "boto3 >=1.6.15", "botocore >=1.12.13", "cookies", "dicttoxml", "docker-py", "flask", "jinja2 >=2.7.3", "jsondiff 1.1.1.*", "mock", "pyaml", "python", "python-dateutil", "python-jose <3.0.0", "pytz", "requests >=2.5", "responses >=0.9.0", "six", "werkzeug", "xmltodict" ],
   "license" : "Apache-2.0",
   "md5" : "17b424658cd07e678b5feebdc932eb52",
   "name" : "moto",
   "sha256" : "5924666f8c1758472dc4c3d22b270b46cd1c4b66c50a9ba50d5c636d2237bdd1",
   "size" : 399973,
   "subdir" : "noarch",
   "timestamp" : 1552438392680,
   "version" : "1.3.7"
 }
}



  1. 解析repodata中的信息获取所有依赖的包的信息。
  2. 采用SAT-solver算法决定需要下载包的哪个版本和它们的安装顺序。
  3. 下载并安装包。

Conda 哪一步慢?

主要是第3步,确定待安装包的依赖包之间的兼容和已安装软件之间的兼容,获得需要下载的包和对应版本。

如何提速 Conda?

  • 采用最新版的conda(Conda-4.7相比 Conda-4.6 提速 3.5 倍,Conda-4.8 应该不会比 4.7 慢)。
  • 安装时指定版本减少搜索空间conda install python=3.7.4
  • 安装 R 包时指定 R 的版本也会极大减小搜索空间(R 包因其数目众多,也是生物类软件依赖解析较慢的原因之一),例如:conda install r-base=4.0.2 r-ggplot2=3.3.2
  • 采用mamba加速软件依赖解析 [mamba采用 c++ 重写了部分解析过程,这个提速效果是很明显的] (安装好mamba后就可以用mamba替换conda进行安装了)。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
conda install mamba -c conda-forge
mamba install python=3.7.4
  • 默认 conda 解析软件依赖时优先考虑允许的最高版本,设置通道优先级权限高于软件版本新旧后,conda 会能更快的解决依赖关系,避免 defaults 和 conda-forge 通道的奇怪组合导致软件依赖解析迟迟不能将结束的问题:conda config --set channel_priority strict(这个命令只需要运行一次)。
  • 创建一个新环境(conda env create -n env_name)再安装软件,这样就不用考虑与已有的软件的兼容问题了,也可以大大降低搜索空间和提高解析软件依赖的速度。
  • 如果安装的软件提供了 environment.yaml 那么用起来,文件中对应的软件版本都很明确,解析依赖关系时更快(具体导出方式见《Bioconda 软件安装神器:多版本并存、环境复制、环境导出》)。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
channels:
 - qiime2/label/r2020.6
 - conda-forge
 - bioconda
 - defaults
dependencies:
 - _libgcc_mutex=0.1
 - _openmp_mutex=4.5
 - _r-mutex=1.0.1
 - alsa-lib=1.1.5
 - arb-bio-tools=6.0.6
 - attrs=19.3.0
 - backcall=0.2.0
 - bibtexparser=1.1.0
 - binutils_impl_linux-64=2.34
 - binutils_linux-64=2.34
 - bioconductor-biobase=2.42.0
 - bioconductor-biocgenerics=0.28.0
 - bioconductor-biocparallel=1.16.6
 - bioconductor-biostrings=2.50.2
 - bioconductor-dada2=1.10.0



  • 添加 bioconda 通道时,注意顺序,给予 conda-forge 最高优先级,其次是 bioconda。如果之前已经添加好了通道,自己在~/.condarc中调整顺序。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
conda config --add channels defaults
conda config --add channels bioconda
conda config --add channels conda-forge

综合以上组合,之前尝试多次都没安装好的工具,直接搞定。

下载提速

  1. 国内镜像,见《软件安装不上,可能是网速慢!Conda/R/pip/brew 等国内镜像大全拿走不谢》。
  2. 换个网或从朋友处拷贝已经下载好的压缩包一般在 anaconda_root_dir/pkgs 下,拷贝放在自己的 anaconda3/pkgs 下面,再次下载时系统会识别已经下载好的包而跳过(并不总是有效)。
  3. 获取所有相关包的名字,从朋友处拷贝下载好的安装包。如果拷贝过来未能自动识别,可手动安装conda install --offline local_path
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mamba install r-base=4.0.2 r-ggplot2=3.3.2 --dry-run >package_solving_result

# _anaconda_depends pkgs/main/linux-64::_anaconda_depends-2020.07-py37_0
# _r-mutex conda-forge/noarch::_r-mutex-1.0.1-anacondar_1
# binutils_impl_lin~ pkgs/main/linux-64::binutils_impl_linux-64-2.33.1-he6710b0_7
# binutils_linux-64 conda-forge/linux-64::binutils_linux-64-2.33.1-h9595d00_17
# brotlipy conda-forge/linux-64::brotlipy-0.7.0-py37h516909a_1000
# bwidget conda-forge/linux-64::bwidget-1.9.14-0
# gcc_impl_linux-64 pkgs/main/linux-64::gcc_impl_linux-64-7.3.0-habb00fd_1
# gcc_linux-64 conda-forge/linux-64::gcc_linux-64-7.3.0-h553295d_17

# 获取所有包的名字
grep '::' a | sed 's/.*:://' | sed 's/$/.tar.bz2/'

# 手动安装
for i in `grep '::' a | sed 's/.*:://' | sed 's/$/.tar.bz2/'`; do conda install --offline /anaconda3/pkgs/$i; done



代码语言:javascript
代码运行次数:0
运行
复制

使用 conda-pack 直接从已经安装好的地方拷贝一份

安装conda-pack:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
conda install -c conda-forge conda-pack
# pip install git+https://github.com/conda/conda-pack.git

打包已经安装好的环境:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
conda pack -n my_env_name -o my_env_name.tar.gz

拷贝打包好的环境 my_env_name.tar.gz 到目标机器,并解压到任何目录,一般推荐放到 envs 目录下(anaconda_root/envs,注意:anaconda_root 改为自己的 conda安装路径)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 解压打包好的环境
# 默认是全都解压到当前目录,场面很壮观
# -C 一定要指定
mkdir -p anaconda_root/envs/my_env
tar -xzf my_env.tar.gz -C anaconda_root/envs/my_env

# 激活环境
source my_env/bin/activate

# Unpack
conda-unpack

# 至此环境就完全拷贝过来了

# 去激活
source deactivate


目前在同样的操作系统(CentOS)测试可以通过,不同操作系统如 centos-ubuntu 尚未测试,各位可以测试下提供下反馈。

参考资料

  1. msarahan,《How We Made Conda Faster in 4.7》,Anaconda
  2. bgruening, msarahan, etc.《Conda solver slowdown FAQ and recommendations》,GitHub Issue
  3. Wolf Vollprecht, Johan Mabille, etc.《GitHub: TheSnakePit/mamba》,GitHub
  4. Marius van Niekerk,《conda-metachannel》,Medium
  5. Anaconda Team,《Understanding and Improving Conda's performance》,Anaconda
  6. 生信宝典,《Conda 软件安装 core dump error/Segment fault/段错误 怎么办?》,生信宝典公众号
  7. 生信宝典,《软件安装不上,可能是网速慢!Conda/R/pip/brew 等国内镜像大全拿走不谢》,生信宝典公众号
  8. 陈同,《用了 Docker,妈妈再也不担心我的软件安装了 - 基础篇》,生信宝典公众号
  9. 陈同,《Linux 学习 - 又双叒叕一个软件安装方法》,生信宝典公众号
  10. Jim Crist,《conda-pack: A tool for packaging and distributing conda environments》,Conda-Pack
  11. 封面来源于 Free Image on Pixabay - Motivational Quote, Try And Stop Me.

猜您喜欢

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BioIT爱好者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
生于MVP,死于PMF--谈谈市场与产品匹配(PMF)
许多做产品和解决方案的同学都知道了MVP(最小可行性产品),我们在做产品孵化的环节都会用到这个方法,但我们的第一轮产品做出来之后呢?如何进行更大范围的市场覆盖呢,面向哪一类客户群体进行覆盖呢?这就需要使用到PMF的方法。PMF(Product/Market Fit),意思是产品符合市场需求,这个概念最早出现在马克·安德森2007年的一篇博客,他在文章中这样定义“在一个好的市场里, 能够用一个产品去满足这个市场”。
ToB行业头条
2020/07/21
1.9K0
长文:一文看尽ToB产品全景像
移动端的流量红利是互联网上半场创业市场繁荣的根本原因,海量的新流量,从供给端拉低了平台产品的获客成本。然而到了2018年后,移动端增速见顶,预示着移动互联网进入“存量残杀”时代。而与之相对应的ToB市场呈现出截然不同的趋势特点。早在2016年,美团王兴提出了“互联网下半场”的概念,他提到:“美团点评作为国内最大的互联网餐饮平台,过去几年做的只是很薄的互联网化,即帮助企业引流。接下来要实现和行业的深度融合,全面帮助它们提升效率,降低成本。”历史之势从来不是无心为之,那这次为什么是ToB呢?就在2019年,中国人均GDP正式迈入1万美元梯队,这是中国发展四五十年产生的奇迹。但在对成绩感到骄傲的同时,外部富有针对性的遏制措施越来越多,霸权思维主导的国际秩序下,民粹、贸易保护主义抬头。强者间斗而不破,开始进入全方位的战略竞争期。在内部,劳动力受旧政策、新环境的复合影响,出现断崖式下降,成本不断攀升。导致低端制造业比较优势丧失,相关产业逐步转移至东南亚、印度、巴西等地区。中国制造的升级需求急迫。还需要清醒认识的是:“中国的科技实力、大学教育、基础科学,相比西方仍然有巨大的差距。”应该避免盲目自信稀释了专注度。宏观层面,仍高度依赖发达国家的高科技产品(进口);中国智造想要迈向全球,也还长路漫漫。微观层面,传统行业信息化水平低、企业管理粗放、诚信体系缺失、供应链效率不足,制约着中国从量到质的转型。这是未来10年必须要变革的难点,也是ToB赛道的历史机遇。
用户5548425
2021/07/20
3.4K0
美团配送系统架构演进实践
美团配送自成立以来,业务经历了多次跨越式的发展。业务的飞速增长,对系统的整体架构和基础设施提出了越来越高的要求,同时也不断驱动着技术团队深刻理解业务、准确定位领域模型、高效支撑系统扩展。如何在业务高速增长、可用性越来越高的背景下实现系统架构的快速有效升级?如何保证复杂业务下的研发效率与质量?本文将为大家介绍美团配送的一些思考与实践。
美团技术团队
2019/03/22
1.7K0
美团配送系统架构演进实践
SaaS产品如何梳理业务判断需求价值?
在做了⼀波业务调研之后,也对业务有了⼀定程度的理解,认为接下来就该到需求分析了。其实不是这样,除了对业务要有⼀个深度了解之外,还需要还原业务中遇到的场景是什么,用户需求价值是什么。如何去判断需求的价值,其实本质是我们需要在产品定义这个环节去梳理清晰。
小冷coding
2023/10/10
3890
SaaS产品如何梳理业务判断需求价值?
ToB产品即战略
来源:ToB企业经营  作者 :童继龙  ---- 有投资人说:99%的ToB公司都只是一门生意,依靠和客户的关系就能做的生意,而只有1%才是值得投资的“企业”,这句话有点儿绝对化,但也可以想想:企业与生意最大的区别在哪里呢?我想最具有代表性的就是“产品力”! 在ToB企业中,如果是想做一具有持续增长能力的“长跑型ToB公司“,那“产品即战略”这句话肯定没错,对于许多项目型的IT公司来说只要有客户资源,什么样的项目都可以接手做,单一客户规模越大越好,因为这样单一客户来源的大订单可以降低营销成本,但是
腾讯SaaS加速器
2020/07/06
8510
9000字详解企业大数据项目规划落地实施路线图
一般来说,一个完整的大数据项目实施,需要经过开发环境搭建、集群环境部署、数据采集、数据存储与交换、数据离线与实时分析、大数据可视化等多个实现流程,这就要求系统掌握大数据技术知识。
肉眼品世界
2022/03/25
3960
9000字详解企业大数据项目规划落地实施路线图
为什么很多SaaS企业级产品都熬不过第一年?
2015年2B企业级应用软件的资本市场异常火热。包括纷享销客、销售易、今目标等一众企业级软件厂商受到各大VC的资本热捧,阿里重金打造的钉钉,也以后发制人之势席卷整个企业级SaaS市场,力图在这块价值洼地上打造另一个新“入口“。 因工作缘由,笔者与周边数位SaaS企业级应用的创始人、运营负责人有过深入接触,发现一个有趣的现象:刚起步时,蓝图远志、规划清晰,但是一路下来,却异常艰难,有些甚至熬不过第一年,就关门歇业。 细细分析下,这里或多或少与传统软件人进入互联网领域,在产品定位、功能需求把握、用户服务、盈
静一
2018/03/23
1.1K0
这5种思维模式,大牛产品经理都在用
移动终端加速了场景化设计的应用进程。移动互联网让更多的用户场景可以被满足,也相应催生了更多产品的核心价值。因此,我们可以针对用户场景,结合移动终端的特性,设计出用户体验更好的移动互联网产品。
IT阅读排行榜
2022/04/14
3350
这5种思维模式,大牛产品经理都在用
原则系列-怎样做B端产品的PMF
来源:SaaS产品说 作者:李东林 ---- 最近在一条新的产品线的PMF阶段,笔者在研究产品的PMF,今天来跟大家简单探讨一下B端产品的PMF, PMF是Product Market Fit的缩写,指的是产品市场匹配度。当我们有一个创业或者产品的想法,在定义开发完一个产品的MVP之后,接下来的一个阶段就是进行产品的市场验证,来验证产品开发的假想是否成立,大多数产品死于这个阶段。如果不进行PMF阶段直接推广,很容易造成大量资源浪费,让你坚持错误的事情,找不到真正需要解决的问题,这样的负面案例很多
腾讯SaaS加速器
2020/06/09
1.1K0
我的一点企业做云经验
最近,经常有朋友问我在企业做云的经验,也有人问我OpenStack二次开发项目经验。正好这方面也有点经历,那现在就把我过往有关经历整理整理,总结出几条心得体会,分享给大家。
SammyLiu
2019/06/28
7450
BA都在忙些啥 - 写给新人的BA工作说明书
在一个不熟悉的人眼里,BA的工作看起来就是不停的沟通、写写用户故事、主持一下会议什么的。最风光可能是在showcase(产品展示会议)的时候,产品受到了用户和客户的肯定;最落魄可能是在IPM(迭代计划会议)的时候,被开发们不停地挑战需求的合理性和完整性。除此之外,有时BA自己也感觉忙忙碌碌、但却又不知道在忙些什么。
ThoughtWorks
2019/05/05
1.4K0
BA都在忙些啥 - 写给新人的BA工作说明书
体验设计五要素之四|产品
辛向阳教授提出:交互设计的本质是对行为的设计。交互设计的五要素分别是:用户、场景、目的、媒介、行为。详情请查看文章《交互设计的本质》。
晓吾
2022/03/30
5090
体验设计五要素之四|产品
ToB 产品的功能推广攻略
来源 :图图的运营事 作者:袁林 图图 ---- 引言 SaaS 产品相较于传统软件,快速上新是核心区别。敏捷开发流程在 SaaS 公司普遍实行,一个 sprint 的周期往往是周或者双周。 产品功能乃至产品线的失败,除了产品本身的问题,还有可能是由于产品推广的节奏和策略不对: 早期产品容易犯的错误——盲目开展商业化导致需求堆积,产品性能都顾不上提升就开始不停做新功能。到头来对于产品核心用户群体的定位会越来越失焦,产品功能成了摊大饼。 产品新功能容易犯的错误——缺乏广泛而客观的调研,被一两个
腾讯SaaS加速器
2020/06/09
9830
SaaS平台产品架构设计
当我们去搜索“架构”,可以得到很多的架构图片,比如组织架构、业务架构、数据架构、技术架构、安全架构、产品架构、部署架构等。
架构之家
2022/09/01
1.5K0
SaaS平台产品架构设计
运维汪转向产品狗的幸(dan)福(teng)之路
写这篇文章的初衷是想总结下自己从业务运维岗转到产品经理岗后,大半年来如何从“零”开始的一路摸爬打过来的经历。
腾讯大讲堂
2018/04/27
1K3
运维汪转向产品狗的幸(dan)福(teng)之路
产品相关 做产品VS做项目
由一组有起止日期的、协调和受控的活动组成的独特过程,该过程要达到符合包括时间、成本和资源约束条件在内的规定要求的目标
授客
2019/09/11
5720
To B 产品三阶段:可用、可卖和规模化
To C 产品一般用户规模大,动辄数百万,产品有什么问题,会迅速通过数据分析发现。而 To B 产品可能只有数百家甚至几十家客户,每家客户的使用人次也不会太高,这样就导致仅仅靠数据分析很难做出科学评估,毕竟样本数太少。
数据猿
2019/12/30
5920
数字产品经理的学习力
当很多人看到《数字产品经理的培养》中,所提到的知识图谱和实践技能时,第一反应是:“做到这些好难啊”。这的确不太容易。但无论起点如何,决定是否能获取到这些技能的一个最基本的能力,是学习力。已经有太多的书和文章,讲如何学习,这里只结合数字产品经理的技能,谈谈可立刻行动的三个方面:
ThoughtWorks
2019/12/30
6670
深入B端SaaS产品设计核心理念
来源:产品晓思 作者:李晓杰 ---- why 为什么要用SaaS模式,这个话题我们从面向B端的传统软件厂商的痛点来聊。 传统软件厂商通常的交付模式是,销售和售前根据线索参与招投标,中标后项目实施团队入驻客户现场,根据客户的实际需求开发或改造功能,完成软件部署交付并经客户业务验收后,核心团队离场由维护人员接手更新。这种模式的局限性总结来说是“赚钱慢”,具体说来如下: 1、成本高。主要包括三方面:销售成本、部署人力成本和维护人力成本。有多少项目,就必须配备多少人力。 2、速度慢。主要包括两方面:交付慢
腾讯SaaS加速器
2021/01/15
1.3K0
你为自己的产品做好战略规划了吗?(市场用户篇)
在我初入职场的第一份工作时,我的一位领导——当时公司的HRVP曾跟我分享的一个职业化经验,一直让我记忆犹新,获益匪浅:他告诉我,能不能做一名好的管理者,问问题的能力是其中一项很重要的能力。做事情、完成任务,能够正确的问出问题、问正确的问题是关键的那个“1”。做战略规划,更是这样。
用户6324559
2023/04/20
2790
你为自己的产品做好战略规划了吗?(市场用户篇)
相关推荐
生于MVP,死于PMF--谈谈市场与产品匹配(PMF)
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验