Tối ưu hóa quy trình làm việc Nextflow trên AWS Batch với Mountpoint for Amazon S3

Tác giả: Michael Mueller và Simon Murray
Ngày phát hành: 13 JAN 2026
Chuyên mục: AWS Batch, High Performance Computing, Life Sciences

Bài viết này được đóng góp bởi Michael Mueller (AWS) và Simon Murray (Genomics England)

Bạn đang chạy các quy trình làm việc genomic với Nextflow trên AWS Batch và gặp phải các nút thắt cổ chai khi chuẩn bị các tệp tham chiếu lớn? Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách tối ưu hóa hiệu suất quy trình làm việc bằng cách tận dụng Mountpoint for Amazon S3 để truyền dữ liệu tham chiếu trực tiếp vào các tiến trình Nextflow của bạn, loại bỏ nhu cầu chuẩn bị lặp lại các tệp tĩnh lớn.

Bối cảnh

Khi chạy các quy trình làm việc Nextflow trên AWS Batch, các tệp đầu vào thường cần được chuẩn bị từ Amazon Simple Storage Service (Amazon S3) sang Amazon Elastic Block Store (Amazon EBS). Đối với các tệp tham chiếu lớn, quá trình chuẩn bị này có thể tạo ra các nút thắt cổ chai đáng kể, đặc biệt khi cùng một tệp được sao chép lặp đi lặp lại cho các lần thực thi tiến trình khác nhau.

Mountpoint for Amazon S3: một cách tiếp cận tốt hơn

Mountpoint for Amazon S3 là một client tệp cung cấp giao diện giống POSIX cho bộ nhớ đối tượng Amazon S3. Nó được tối ưu hóa đặc biệt để truy cập đọc các đối tượng lớn, làm cho nó lý tưởng cho các quy trình làm việc genomic yêu cầu truy cập các tệp tham chiếu lớn. Với Mountpoint, bạn có thể gắn một S3 bucket như một hệ thống tệp cục bộ và truyền dữ liệu trực tiếp vào các tiến trình của bạn mà không cần sao chép toàn bộ tệp vào bộ nhớ cục bộ trước.

Hiểu về cách xử lý dữ liệu của Nextflow

Trong Nextflow, có hai cách để tham chiếu các tệp đầu vào:

  1. Dataflow Channels: Cách tiếp cận được khuyến nghị cho các tệp được truyền giữa các tiến trình và đại diện cho các kết quả trung gian có thể tạo ra các phụ thuộc giữa các workflow tasks mà Nextflow quản lý khi điều phối việc thực thi workflow.
  2. Direct Path References: Phù hợp cho các tệp tham chiếu tĩnh không thay đổi giữa các lần chạy và không được truyền giữa các tiến trình, do đó không ảnh hưởng đến việc điều phối các workflow tasks.

Cách Genomics England tận dụng Mountpoint for Amazon S3 để tăng tốc pipeline chú thích biến thể của họ

Genomics England sử dụng một quy trình làm việc Nextflow chạy công cụ Variant Effect Predictor, yêu cầu hơn 500 GB dữ liệu tham chiếu. Ban đầu, nhóm đã cân nhắc sử dụng tích hợp S3 có sẵn của Nextflow. Tuy nhiên, cách tiếp cận này nhanh chóng tỏ ra không thực tế do thời gian chuẩn bị kéo dài cho các bộ dữ liệu lớn như vậy. Để vượt qua thách thức này, Genomics England đã áp dụng Mountpoint for Amazon S3 cho dữ liệu tham chiếu, loại bỏ nhu cầu chuẩn bị tệp tốn thời gian. Tối ưu hóa này đã tăng tốc đáng kể pipeline chú thích biến thể của họ.

Kiến trúc giải pháp

Hình 1 cho thấy cách dữ liệu tham chiếu được lưu trữ trong một Amazon S3 bucket được truy cập từ một tiến trình Nextflow chạy trong một Docker container bằng cách sử dụng Mountpoint for Amazon S3. Dữ liệu đầu vào khác được chuẩn bị vào Amazon EBS volume được gắn vào Amazon Elastic Compute Cloud (Amazon EC2) instance.


Hình 1: Kiến trúc AWS Batch sử dụng Mountpoint for Amazon S3. Dữ liệu tham chiếu được truyền vào container tiến trình Nextflow thông qua client Mountpoint for Amazon S3, client này trình bày S3 bucket như một thư mục trên hệ thống tệp cục bộ (1). Đường dẫn mount được ánh xạ vào Docker container dưới dạng một volume (2). Dữ liệu đầu vào khác được chuẩn bị vào Amazon EBS volume được gắn vào Amazon EC2 instance thông qua tích hợp Amazon S3 tiêu chuẩn của Nextflow (3).

Dưới đây là cách thiết lập môi trường của bạn để sử dụng Mountpoint for Amazon S3 trong các quy trình làm việc Nextflow của bạn.

Điều kiện tiên quyết

Hướng dẫn chi tiết

1. Thêm cài đặt client Mountpoint vào EC2 launch template

Bạn nên đã có một launch template được liên kết với môi trường AWS Batch compute của bạn. Trong phần User Data, hãy thêm các lệnh bash sẽ cài đặt Mountpoint client và gắn S3 bucket của bạn:

curl -s https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm -o /mount-s3.rpm
dnf -y install /mountpoint-s3.rpm
mkdir -p /my-s3-mountpoint
mount-s3 my-s3-bucket /my-s3-mountpoint

Xin lưu ý Mountpoint yêu cầu tên của một S3 bucket chứ không phải S3 URI.

Chạy Docker containers dưới dạng non-root users được coi là một thực tiễn bảo mật tốt nhất vì nó làm giảm tác động tiềm tàng của việc thoát khỏi container và tuân thủ nguyên tắc đặc quyền tối thiểu. Theo mặc định, những người dùng khác ngoài người dùng đã chạy lệnh mount-s3 không thể truy cập thư mục đã gắn của bạn, ngay cả khi các cài đặt quyền và sở hữu cho phép. Điều này đúng ngay cả đối với root user và là một hạn chế của hệ thống FUSE mà Mountpoint sử dụng để tạo một hệ thống tệp.

Khi chạy Docker containers dưới dạng non-root users, hãy sửa đổi lệnh Mountpoint của bạn trong EC2 launch template để cho phép non-root users truy cập vào mount:

mount-s3 my-s3-bucket /my-s3-mount-point –allow-other

Để sử dụng cờ này, bạn có thể cần cấu hình FUSE trước bằng cách thêm dòng user_allow_other vào tệp /etc/fuse.conf. Ngay cả khi cờ này được bật, Mountpoint vẫn tôn trọng các quyền và sở hữu được cấu hình bằng các cờ khác.

2. Cấu hình Nextflow volume

Trong cấu hình AWS Batch của Nextflow pipeline của bạn, hãy thêm thư mục Mountpoint for Amazon S3 làm một volume:

aws {
batch {
volumes = ‘/my-s3-mount-point:/my-s3-mount-point:r’
}
}

3. Truyền đường dẫn tệp tham chiếu vào tiến trình Nextflow

Để truyền dữ liệu trực tiếp từ Amazon S3 mà không cần chuẩn bị, đường dẫn đến thư mục Mountpoint for Amazon S3 phải được truyền vào tiến trình Nextflow bằng cách sử dụng val input directive. (Lưu ý rằng việc sử dụng path input directive với đường dẫn Mountpoint sẽ dẫn đến lỗi trong quá trình chuẩn bị dữ liệu.) Tuy nhiên, hãy tiếp tục truyền dữ liệu không tĩnh bằng cách sử dụng path directive.

Các đường dẫn Mountpoint được truyền dưới dạng val có thể được tham chiếu trực tiếp trong script block:

process VEP {
input:
path(vcf)
val(vep_cache)
script:
"""
vep \
--input_file $vcf \
--fasta $params.human_reference_fasta \
--dir_cache $vep_cache
"""
}

Xây dựng AMI tùy chỉnh để hợp lý hóa thiết lập

Để tối ưu hóa việc triển khai infrastructure của bạn, bạn có thể tạo một Amazon Machine Image (AMI) tùy chỉnh với Mountpoint for Amazon S3 được cài đặt sẵn. Cách tiếp cận này loại bỏ nhu cầu tải xuống Mountpoint client lặp đi lặp lại trong mỗi lần khởi chạy EC2 instance. Bằng cách đóng gói Mountpoint vào AMI tùy chỉnh của bạn, bạn có thể đảm bảo thời gian khởi động instance nhanh hơn và chuẩn hóa cấu hình triển khai của bạn trên toàn bộ môi trường compute.

Tạo AMI tùy chỉnh của bạn từ launch template thông qua AWS Management Console:

  1. Điều hướng đến EC2 Dashboard
  2. Tìm tùy chọn “Launch Templates” trong ngăn điều hướng bên trái
  3. Chọn Mountpoint launch template của bạn
  4. Sử dụng menu thả xuống “Actions”
  5. Chọn “Launch instance from template.”

Khi instance của bạn đang chạy với Mountpoint for Amazon S3 được cài đặt và cấu hình đúng cách, hãy tạo AMI tùy chỉnh của bạn:

  1. Chọn instance trong EC2 console
  2. Chọn “Actions”
  3. Chọn “Image and templates”
  4. Chọn “Create image” để tạo AMI của bạn

Bây giờ, hãy cập nhật launch template của bạn để loại bỏ thiết lập Mountpoint khỏi phần User Data và chỉ định AMI tùy chỉnh của bạn trong phần Application and OS Images.

Kết luận

Trong bài viết này, chúng tôi đã chỉ ra cách tối ưu hóa các quy trình làm việc Nextflow trên AWS Batch bằng cách sử dụng Mountpoint for Amazon S3 để truyền dữ liệu tham chiếu. Cách tiếp cận này loại bỏ các nút thắt cổ chai trong việc chuẩn bị tệp cho các tệp tham chiếu tĩnh lớn trong các genomic pipelines của bạn. Để bắt đầu và tìm hiểu thêm về việc gắn S3 buckets như một hệ thống tệp cục bộ, hãy truy cập tài liệuGithub repository của Mountpoint for Amazon S3.

Về tác giả

Michael Mueller

Michael Mueller

Michael Mueller là Kiến trúc sư Giải pháp Genomics cấp cao tại AWS. Anh ấy đam mê giúp khách hàng kết hợp sức mạnh của genomics và cloud computing để cải thiện chăm sóc sức khỏe. Anh ấy thích khám phá khu rừng đô thị lớn của London cũng như các vùng ngoại ô của UK và Châu Âu.

Simon Murray

Simon Murray

Simon Murray là Kỹ sư Tin sinh học tại Genomics England. Anh ấy quan tâm đến AWS Infrastructure và việc tích hợp phát triển Nextflow pipeline với các cloud providers để cải thiện hiệu quả và tốc độ của các pipeline. Anh ấy cũng quan tâm đến cách AWS analytics có thể được sử dụng để cung cấp số liệu thống kê trong thể thao.

Leave a comment