-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathREADME.qmd
114 lines (87 loc) · 2.75 KB
/
README.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
---
title: "README"
format: gfm
execute:
echo: false
warning: false
message: false
---
```{r,setup, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
# comment = "#>",
fig.width = 7,
fig.height = 7,
dpi = 150,
fig.path = "figures/README-",
out.width = "100%"
)
```
## NVIDIA GPUs Testing with dorado
**Devices**:
- 01 V100
- 04 V100
- 01 L40S
- 01 A100
- 01 T4
**Input dataset:** 80415 Kleb R10 reads
**Setting**:
- **NB**: Environmental setup is not identical for each device because of limited options, particularly the storage, the results thus were affected by this factor.
- T4 - network storage
- A100 - network storage
- L40S - local
- 4-V100 - local
- `dorado 0.4.3` with three models `[email protected]`, `[email protected]`, and `[email protected]`
- Basecalling for each model is replicated with 100 iterations, see `scripts`
- `benchmark.sh`
- `collate-logs.py`
**Results**:
```{r, process-data}
library(data.table)
library(tidyverse)
library(ggplot2)
library(lubridate)
library(DT)
library(kableExtra)
options(scipen = 9999)
read_log <- function(x, gpu){
fread(x) %>%
mutate(model = str_extract(Filename, "sup|hac|fast")) %>%
mutate(`Elapsed Time` = hms(`Elapsed Time`) %>% as.numeric()) %>%
mutate(gpu=gpu)
}
v100_1 <- read_log("prom_log.csv", "1-V100")
v100_4 <- read_log("4-V100-devs.csv", "4-V100")
T4 <- read_log("T4-logs.csv", "T4")
L40S <- read_log("log.csv", "L40S")
A100 <- read_log("A100.csv", "A100")
log <- bind_rows(v100_1, v100_4, T4, L40S, A100)
stats <- log %>%
mutate(Basecalled = Basecalled/1e6) %>%
group_by(gpu, model) %>%
summarise(mean = mean(Basecalled), median = median(Basecalled), sd = sd(Basecalled))
dt <- kableExtra::kable(stats, "markdown", caption = "Million samples/s")
dt
```
The higher the number, the better.
```{r, plot-speed}
ggplot(data = log) +
geom_boxplot(aes(x = gpu, y = Basecalled, color = gpu)) +
facet_wrap(. ~ model) +
scale_y_continuous(breaks = seq(0, max(log$Basecalled), by = 10000000), labels = scales::unit_format(unit = "M", scale = 1e-6)) +
labs(title = "Speed", y = "Samples/s") +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
guides(color = "none")
```
```{r,plot-eta}
ggplot(data = log) +
geom_boxplot(aes(x = gpu, y = `Elapsed Time`, color = gpu)) +
facet_wrap(. ~ model) +
scale_y_continuous(breaks = seq(0, max(log$`Elapsed Time`), by = 100)) +
ylab("Elapsed Time (s)") +
labs(title = "Elapsed Time") +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
guides(color = "none")
```
The extreme outliers of the A100 particularly for fast model, may suggest that there were network bottleneck IO.
> Generated by Quarto