macでインフォマティクス

macでインフォマティクス

HTS (NGS) 関連のインフォマティクス情報についてまとめています。

ベンチマークその2(2019)

 2020 9/12,9/13 誤字修正

 

 1の続きになります。

 

ピークメモリ値

 以下のグラフは前回の投稿のxeon E5 v4 dualのランログから取った、各ツールのピークメモリ使用量(GB)になる (n=5)。flyeのピークメモリが突出していた。特にエラー修正していないraw ONT リードをアセンブリに使うと60GBを超えていた(*1)。前もってLordecでエラー修正してから使うと、ピークメモリは25GB前後まで減った。

f:id:kazumaxneo:20200113194302p:plain

前回の投稿で、32GBメモリのryzen7計算機は、raw ONT リードのアセンブリのみセグメンテーションフォルト を出して終了したと書いたが、ピークメモリの値からメモリが足りなかった事が主要な原因だとわかった。

 

補足  

ところでLoRDEC(紹介)でエラー修正することでONTのアセンブリは変化するのだろうか?アセンブリ配列をseqkitでチェックする。

$ seqkit stats -T flye_correct/assembly.fasta flye_raw/assembly.fasta 

出力を表にした。

f:id:kazumaxneo:20200113200920p:plain

de novo アセンブリ前にエラー修正することで、contig数は144から49まで減り、連続性も大きく改善していた。最大長のcontigサイズも14Mbから16Mbに増加した。QUAST-LG(紹介)の結果も一番下にまとめた(*5)。アセンブリ前にショートリードでエラー修正する価値は多いにあると言える。

 

 

まとめに入る。今回使ったマシンの長所・短所を簡単にまとめた。

1、3700x自作機

不可の低いジョブで高い性能を示したものの、多くのコアを使う計算集約的なジョブでは遅れが目立った。ECCメモリ(参考)を使えないため、長時間のジョブを走らせるには不安が残る。しかし8万円前後で組めることを考えれば費用効果は抜群に高い。2019夏に購入して連続運用しているが、今のところシャットダウンやパーツの破損などのトラブルもない。Ubuntuがかなり成熟してきたことも使い勝手の良さを後押ししている。目立った欠点は128GBしかメモリが積めないことか(ボードによっては64GB)。またメモリがデュアルチャネル、PCIの帯域なども気になるところ。

2、MousePro

簡単なジョブ、計算集約的なジョブを問わず高い性能を示した。

3、xeon platinum自作ワークステーション

本体価格が一番高い割には計算時間がかかることが多く、今回の比較ではいいところがなかった。flyeのランタイムが長くなった原因は不明。AVX-512対応は長所だが(e.g., BWA MEM2)、AVX-512はクロックが下がる問題があるので手放しで喜べない。

4、mac mini 2018上位

3と同様、特にいいところがなかった。計算集約的なジョブ、特にのlordecのランで遅れが目立ったのは、mac miniの冷却性能が低く、長時間負荷による熱の蓄積でCPUのサーマルスロットリングが起き、上限クロックまで上がらなかったためかもしれない(*4)。osxが使え、各種安定ドライバ、完成度の高い有料アプリが揃っているのが一番のメリットかもしれない。

5、Apple mac pro 2012 early (リンク

すでに引退させた機種だが、予想以上に高いパフォーマンスを示した。osのアップデートができないので今後セキュリティ面が難しくなるが、用途を限定すればまだまだ使えそうな気がした。しかし電気代の面で高コストである。主力運用は控えたい。

 

次に、今回実行したジョブの各計算機のランタイムの平均値と、計算機の価格の図を示した。計算機の発売時期は全く異なり、点の数も全然足りないのだが、参考程度に見て欲しい。図では、安くて性能が高い(費用効果が良い)計算機ほど左下に位置する。ryzen7の計算機がその位置に最も近く、2番目に近いのはxeon E5 2680 dualの計算機である。では、ryzen7 3700xが最も優秀な計算機と結論して良いのだろうか。

f:id:kazumaxneo:20200114003900p:plain

 ここで忘れてはいけないのが、計算機の堅牢性や冗長性、環境負荷(消費電力)など数値に変えにくい因子である。上の図はこれらの因子を抜きにして議論している。いくら安くても、ラン中にメモリエラーを起こしたり、データが頻繁に飛ぶような計算機では使い物にならない。よって、左下に行くほど良い計算機と簡単に判断するのは危険である。とすれば、実は散布図中央の一番下付近がスイートスポットで、この位置する計算機が好ましいのかもしれない。高い計算能力を持ち、堅牢性も備えた計算機を組み立てれば、コストが上がって自然にその辺りにプロットされるからである。今回使った計算機の中では、xeon E5 2680 dualが最もその位置に近いだろうか。

 では結局のところどのような計算機を持つのが理想的だろうか?とりあえず3990xを買って計算集約的なジョブにはこちらを使い、ルーチンの軽いジョブはryzenやcoreiシリーズ、という風に使い分けするのがバランスが良いろうか?この手の話はケースバイケースであり、十把一絡げな議論は難しいが、ここで1つ注意したいのは、ZEN2世代のRyzen Threadripperのメモリ上限が256GBしかないことである。256GBメモリでは、真核生物のアセンブリ(例えばmasurcaのメモリ使用量)、メタゲノムのアセンブリmetaFlyeの質問,  metaspades)では不安が残る。幸い現在ではたくさんのクラウドリソースが利用できるようになっていて、お金を払えば24TBメモリなどリッチクラウドはすぐに利用できる。

この文章自体5年、いや10年遅いが、今や研究室単位で巨大なクラスタを持つ時代ではなくなって来ている。研究室単位ではせいぜいRyzen Threadripper程度のマシンにとどめ大きなデータはクラウドスパコン含む)、という風に使い分けるのが賢い選択だと思う。(分野によります。主観性の強い意見なので参考程度に)。

2020 9/13 追記

OEM向けに2TBまで対応したThreadripper Proが発売・出荷されている。こちらのCPUが搭載されたマシンを使えば、メモリ容量問題はほぼ解決する(3990xよりクロックがやや低いので、TRを使うメリットがやや損なわれているのは問題だと思う)。

 

まとめ

xeon E5 v4 2680 dual > ryzen7 3700x   mac mini i7 > xeon platinum P-8136

 

 

 

 

 

 

 

 

補足

*1

flyeのメモリ使用量はGithubにまとめられている。

https://github.com/fenderglass/Flye

 *2

実はxeon platinumのマシンはその位置を狙って組んだのだが、ジョブによってかなり時間がかかる計算機になってしまった(flye参照)。 

 *3

このmac mini2018のcorei7はオプションであり、デフォルトではよりクロックの低いCPUになっている。appleは時々インテル系CPUの発熱を甘く見てやらかすので(macbook pro2018のcorei9コアモデル)、corei7の熱をうまくさばけていないのかもしれない。

 *4

学内のスパコンサービスや計算機研究者にお願いしてリッチな環境も利用させてもらえるなら解決する問題かもしれない。

 *5

連続性は向上していても、その分エラーが増えていれば意味がない。QUEST-LGで評価する。

quast flye_correct/assembly.fasta flye_raw/assembly.fasta \
-R Arabidopsis_thaliana.TAIR10.dna.toplevel.fa.gz \
-1 clean_1.fq.gz -2 clean_2.fq.gz \
--nanopore ont_trimmed.fq.gz \
--labels flye_correct,flye_raw \
--eukaryote \
-o quast_output \
-t 40 --large

以下に結果の表を乗せた。エラー修正することで、genome fraction6%近く上がった。ミスマッチの塩基数は増えているものの、indelエラーが大きく減った。また、リファレンスゲノムに全くアラインされないcontigの数が41から1に減った。まだindelエラーは多いが、raconやpilonでエラー修正することでさらにrefineできると思われる。

Genome statistics flye_correct flye_raw
Genome fraction (%) 79.563 73.857
Duplication ratio 1.017 1.002
Largest alignment 3832552 3540314
Total aligned length 96645076 88413363
NG50 14486416 12278303
NG75 11422790 9738359
NA50 488799 274714
NA75 58141 -
NGA50 488799 336387
NGA75 56885 -
LG50 4 5
LG75 7 7
LA50 44 64
LA75 222 -
LGA50 44 54
LGA75 224 -
Misassemblies    
# misassemblies 856 565
   # relocations 428 354
   # translocations 415 199
   # inversions 13 12
# misassembled contigs 20 16
Misassembled contigs length 116668822 112170040
# local misassemblies 7465 4680
# scaffold gap ext. mis. 0 0
# scaffold gap loc. mis. 0 0
# possible TEs 304 166
# unaligned mis. contigs 15 56
Unaligned    
# fully unaligned contigs 1 41
Fully unaligned length 66442 1098364
# partially unaligned contigs 36 92
Partially unaligned length 22758306 36369393
Mismatches    
# mismatches 1264899 973593
# indels 381552 860169
Indels length 1335715 1752268
# mismatches per 100 kbp 1330.59 1103.27
# indels per 100 kbp 401.37 974.74
   # indels (<= 5 bp) 348521 827147
   # indels (> 5 bp) 33031 33022
# N's 200 900
# N's per 100 kbp 0.17 0.71
Statistics without reference    
# contigs 47 139
# contigs (>= 0 bp) 47 144
# contigs (>= 1000 bp) 47 141
# contigs (>= 5000 bp) 46 127
# contigs (>= 10000 bp) 43 112
# contigs (>= 25000 bp) 41 102
# contigs (>= 50000 bp) 38 72
Largest contig 16188110 14781025
Total length 119509464 125898504
Total length (>= 0 bp) 119509464 125904440
Total length (>= 1000 bp) 119509464 125902454
Total length (>= 5000 bp) 119505257 125848957
Total length (>= 10000 bp) 119481288 125734397
Total length (>= 25000 bp) 119445279 125544799
Total length (>= 50000 bp) 119331684 124385925
N50 14486416 12278303
N75 11422790 8802673
L50 4 5
L75 7 8
GC (%) 36.1 36.41