Kết quả thực nghiệm cho thấy hướng tiếp cận này thực thi trên các bộ dữ liệu lên đến hàng trăm nghìn điểm với độ chính xác khá cao với thời gian có thể chấp nhận được... Trong việc giải
Nêu vấn đề
Hiện nay, khi nhu cầu khám phá kiến thức mới từ cơ sở dữ liệu lớn tăng lên, một loạt các phương pháp xử lý hiệu quả với dữ liệu lớn đang thu hút ngày càng nhiều sự quan tâm của các nhà nghiên cứu Trong đó, khai phá dữ liệu chuỗi thời gian cũng là một đề tài thu hút nhiều sự quan tâm Dữ liệu chuỗi thời gian (time series data) tồn tại trong khá nhiều ứng dụng thuộc nhiều lĩnh vực khác nhau như: kinh tế, tài chính, y tế, giáo dục, môi trường, địa lý, sinh học, … Chẳng hạn, trong nghiên cứu thiên văn học, dữ liệu chuỗi thời gian được tạo ra bởi các trạm quan sát không gian mỗi ngày là một lượng lớn và tìm kiếm mẫu trình tự được chỉ định trong cơ sở dữ liệu lớn đó có thể giúp khám phá các hiện tượng thiên văn điển hình Do đó, khai phá dữ liệu này sẽ đem lại nhiều lợi ích, góp phần phát triển cuộc sống Hình 1.1 là một ví dụ minh họa về chuỗi thời gian trong lĩnh vực tài chính
Hình 1.1: Dữ liệu chuỗi thời gian về tỷ giá tiền tệ [1]
Có rất nhiều bài toán và công trình nghiên cứu liên quan đến dữ liệu chuỗi thời gian có thể kể đến như phân lớp, gom cụm, phát hiện mô típ, phát hiện bất thường, khai
Chương 1: Giới thiệu về Đề tài
2 phá luật kết hợp, … Các ứng dụng đa phần sử dụng kết quả của bài toán tìm kiếm tương tự so trùng chuỗi con (subsequence matching) để làm đầu vào cho quá trình tính toán
Chẳng hạn như, các ứng dụng như phát hiện mô típ hay phát hiện bất thường có thể dựa vào kết quả quá trình kết chuỗi con (subsequence join) mà bài toán căn bản là so trùng chuỗi con [2] So trùng chuỗi con là quá trình so trùng một-nhiều (one-to-many), trong khi đó, bài toán kết chuỗi con là quá trình so trùng nhiều-nhiều (many-to-many) trên hai chuỗi thời gian như minh họa ở Hình 1.2 Như vậy, kết chuỗi con là bài toán tổng quát hơn của bài toán so trùng chuỗi con Đề tài này sẽ tập trung nghiên cứu vào bài toán kết chuỗi con, một bài toán nền tảng trong nhiều ứng dụng
Hình 1.2: (Trái) So trùng chuỗi con; (Phải) Kết chuỗi con
Trong việc giải quyết bài toán kết chuỗi con hay bài toán căn bản hơn là so trùng chuỗi con, một thành phần thiết yếu cần phải được quyết định là phép đo tương tự, hoặc phép đo khoảng cách, của hai dữ liệu chuỗi thời gian Ý tưởng trực quan ban đầu là chọn khoảng cách Euclid Tuy nhiên, do các điều kiện không đạt yêu cầu của thực tế, chẳng hạn như nhiễu trong cảm biến, lỗi đo lường trong các thử nghiệm, … chuỗi thời gian có thể bị méo mó và độ chính xác của so trùng chuỗi con có thể không cao Trong trường hợp này, độ đo khoảng cách xoắn thời gian động (Dynamic Time Warping - DTW), đã được đề xuất [3] Khoảng cách DTW cho phép chuỗi thời gian có mức độ biến dạng giới hạn (thường được gọi là cong vênh) và thuật toán tính toán khoảng cách DTW thậm chí còn cho biết cách khôi phục lại chuỗi bị biến dạng theo mẫu đã cho Sau nhiều công trình và ứng dụng trong một thời gian dài, khoảng cách DTW hiện được coi là phép đo khoảng cách tốt nhất [4]
Tuy nhiên, việc tính toán khoảng cách DTW là một quá trình tính toán lớn Tính toán độ đo DTW theo định nghĩa của nó mất rất nhiều thời gian dẫn đến hiệu quả của
Chương 1: Giới thiệu về Đề tài
3 các ứng dụng dựa trên khoảng cách DTW bị hạn chế rất lớn Vì thế, để cải thiện hiệu suất của các ứng dụng dựa trên DTW, các nhà nghiên cứu đã đề xuất nhiều phương pháp tăng tốc cho đến nay Nhiều công trình nghiên cứu đã tiếp cận cải tiến hiệu năng cao hơn theo hướng phần mềm để giảm số lần tính toán khoảng cách DTW trong quá trình tìm kiếm so trùng chuỗi càng nhiều càng tốt Các phương pháp tăng tốc tiếp cận bằng phần mềm có thể kể đến như cắt tỉa ràng buộc thấp hơn, chiến lược từ bỏ sớm, lập chỉ mục, … Tuy nhiên, tính toán khoảng cách DTW vẫn mất quá nhiều thời gian, lên tới hơn 80% toàn bộ thời gian tìm kiếm tương tự [5]
Gần đây, một số phương pháp tăng tốc bằng phần cứng được đề xuất để cải thiện hơn nữa hiệu suất của bài toán Phần cứng được sử dụng trong các phương pháp này bao gồm FPGA và GPU [6] [7] FPGA cho mức độ song song hóa cao do có thể cấu hình và sửa đổi hệ thống cho phù hợp với bài toán cụ thể Tuy nhiên, lập trình FPGA tương đối khó khăn, việc cấu hình và sử dụng đòi hỏi phải có kiến thức chuyên môn về thiết kế mạch điện tử Trong khi đó, GPU về mức độ song song hóa đạt được có thể không cao bằng FPGA, nhưng mô hình lập trình của GPU đã được phát triển tốt và thuận tiện để thực hiện các thuật toán trên GPU Có một số phiên bản triển khai DTW trên GPU và đạt được một số kết quả nhất định như ở các nghiên cứu ([6], [8], [9], [10], [11]) Do đó, luận văn này cũng sẽ đi theo hướng tiếp cận tăng tốc bằng phần cứng, thực hiện song song hóa việc tính toán DTW dựa trên công nghệ GPU Ngoài ra, luận văn còn hiện thực một cách tiếp cận khác theo hướng kết hợp giữa giải pháp bằng phần mềm và sử dụng GPU để giải quyết bài toán kết chuỗi con trên dữ liệu chuỗi thời gian.
Bài toán Kết chuỗi con trên dữ liệu chuỗi thời gian
Dữ liệu chuỗi thời gian T được định nghĩa là một chuỗi có thứ tự n giá trị
𝑇 = (𝑡 1 , 𝑡 2 , … , 𝑡 𝑖 , … , 𝑡 𝑛 ) Trong đó, các giá trị được thu thập từ sự đo đạc thực hiện tại các khoảng thời gian đều nhau 𝑡 𝑖 và theo một tỷ lệ lấy mẫu nhất định Bài toán kế chuỗi con được phát biểu như sau:
Cho trước hai chuỗi thời gian 𝑋 và 𝑌 và một ngưỡng khoảng cách 𝜀 Bài toán kết chuỗi con trên hai chuỗi thời gian trả về tập hợp chứa tất cả các cặp chuỗi con (𝑋 𝑖 , 𝑌 𝑗 ) sao cho 𝑋 𝑖 là chuỗi con của chuỗi 𝑋 bắt đầu tại vị trí i và 𝑌 𝑗 là chuỗi con của chuỗi 𝑌 bắt đầu tại vị trí j và 𝐷(𝑋 𝑖 , 𝑌 𝑗 ) < 𝜀 và chiều dài của các chuỗi con đem kết phải lớn hơn 1
Chương 1: Giới thiệu về Đề tài
4 Bài toán kết chuỗi con trên dữ liệu chuỗi thời gian đã ghi nhận nhiều nghiên cứu trong những năm gần đây Một trong những khó khăn lớn nhất khi giải quyết bài toán này là chi phí về không gian bộ nhớ lớn, và thời gian xử lý lâu nếu tiếp cận bằng phương pháp cửa sổ trượt (sliding window) thuần túy.
Ý nghĩa của Đề Tài
Luận văn đã đưa ra một hướng tiếp cận khác cho bài toán kết chuỗi con trên chuỗi thời gian Đó là việc sử dụng giải pháp tăng tốc bằng phần cứng cho bài toán kết chuỗi con bên cạnh các hướng tăng tốc bằng cách cải tiến thuật toán hay còn gọi là kỹ thuật tăng tốc phần mềm như hầu hết những công trình nghiên cứu trước đây Cụ thể, luận văn đã tổng quát hóa quá trình xử lý song song cho bài toán so trùng chuỗi con cho bài kết chuỗi con Đồng thời, luận văn đề xuất một hướng kết hợp cả hai kỹ thuật phần cứng và giải pháp phần mềm cho bài toán kết chuỗi con trên chuỗi thời gian để cho ra một kết quả tốt hơn
Việc tăng tốc tính toán cho bài toán kết chuỗi con trên dữ liệu thời gian là cần thiết bởi nó có nhiều ứng dụng thực tiễn trong nhiều lĩnh vực như y tế, giáo dục, kinh tế, môi trường, vũ trụ, … Bài toán kết chuỗi con hay bài toán so trùng chuỗi con là những bài toán căn bản trong khai phá dữ liệu chuỗi thời gian, nên có thể dùng trong nhiều ứng dụng như phân lớp, gom cụm Do đó, tăng tốc tính toán cho những bài toán căn bản này giúp cho nhiều ứng dụng có được kết quả nhanh hơn
Trong lĩnh vực tài chính, bài toán có rất nhiều ứng dụng Chẳng hạn dựa vào tỷ giá hối đoái hai loại đồng tiền bất kỳ so với đồng đô la Mỹ ta có thể xác định những giai đoạn mà đồng tiền của một quốc gia đang phụ thuộc vào đồng đô la Mỹ Với việc diễn tả các ngoại tệ dạng tỷ giá hối đoái so với đồng đô la Mỹ ta có được các chuỗi thời gian
Các chuỗi này sẽ được kết chuỗi con lại với nhau để tìm ra những thời đoạn mà chúng cùng phụ thuộc vào đồng đô la Mỹ Từ đó, phản ánh lại thực tế các chính sách của quốc gia và có những quyết sách phù hợp cho tương lai
Chương 1: Giới thiệu về Đề tài
5 Bài toán có thể ứng dụng trong các vấn đề liên quan đến bản quyền chẳng hạn như phát hiện đạo nhạc Bằng việc mô hình hai bài hát thành hai chuỗi thời gian, ta có thể xác định được những đoạn là giống nhau của hai bài hát nhờ phép kết chuỗi con Từ đó, ta có thể xác định một bài hát có vi phạm đạo nhạc hay không.
Mục tiêu, giới hạn và đối tượng nghiên cứu
Đề tài tập trung vào nghiên cứu những vấn đề sau:
- Tìm hiểu về dữ liệu chuỗi thời gian và các bài toán liên quan như kết chuỗi con, so trùng chuỗi con, …
- Tìm hiểu về độ đo xoắn thời gian động (Dynamics Time Warping)
- Tìm hiểu về phương pháp xác định các điểm cực trị quan trọng (important extrema) để tạo ra các chuỗi con cho quá trình kết chuỗi con
- Tìm hiểu các kỹ thuật để tăng tốc bằng giải pháp phần mềm
- Tìm hiểu về GPU, lập trình song song và các kỹ thuật tối ưu khi lập trình trên GPU Đề tài chỉ nghiên cứu trên dữ liệu chuỗi thời gian đơn biến và tĩnh Kiến trúc GPU của hãng NVIDIA được sử dụng trong việc xử lý song song Việc tăng tốc sẽ chỉ được thực hiện trên một thiết bị GPU cụ thể, thay vì nhiều thiết bị GPU cùng lúc.
Kết quả đạt được
Với các mong muốn nghiên cứu kể trên, đề tài đã đạt được phần lớn các mục tiêu đề ra
Luận văn đã tìm hiểu và hiện thực được giải pháp phân đoạn chuỗi thời gian bằng kỹ thuật xác định các điểm cực trị quan trọng dựa vào tham số R Tham số này là đại lượng quan trọng để đánh giá một điểm là cực trị quan trọng hay không Kết quả là chuỗi thời gian được cắt thành nhiều đoạn, mỗi đoạn có hai đầu mút là hai điểm cực trị cùng loại liền kề nhau Các phân đoạn của chuỗi thời gian này là các mẫu truy vấn 𝑄 để phục vụ cho bài toán kết chuỗi con
Luận văn đã tìm hiểu và xây dựng được ứng dụng giải quyết bài toán kết chuỗi con trên dữ liệu chuỗi thời gian Trong đó, quá trình so trùng chuỗi con, độ đo xoắn thời gian động được sử dụng làm độ đo tương tự và được tính toán trên GPU Việc sử dụng độ đo
Chương 1: Giới thiệu về Đề tài
6 xoắn thời gian động có nhiều lợi thế như thích hợp cho các chuỗi con “lệch pha” và có chiều dài khác nhau Bên cạnh đó, luận văn còn kết hợp thêm ràng buộc Sakoe-Chiba nhằm tăng tốc quá trình tính toán Qua thực nghiệm trong phần 5.2, các kết quả thu được thỏa mãn yêu cầu của bài toán kết chuỗi con
Luận văn đã tìm hiểu và hiện thực được việc tăng tốc tính toán cho bài toán kết chuỗi con trên dữ liệu chuỗi thời gian dựa vào GPU Dựa vào mô hình lập trình không đồng nhất, quá trình so trùng chuỗi con được thực thi trên thiết bị GPU Cụ thể GPU sẽ kích hoạt các hạt nhân trên các luồng (thread) để tính toán độ đo khoảng cách xoắn thời gian động Kết quả này sẽ được trả về CPU để xác định những phân đoạn là tương tự nhau của chuỗi truy vấn 𝑄 Ngoài ra, luận văn còn kết hợp thêm các ràng buộc dải Sakoe-Chiba và ràng buộc chặn dưới (lower bound) vào việc song song hóa để tăng tốc hơn nữa thời gian thực thi cho bài toán Với các kết quả thực nghiệm được miêu tả trong phần 5.3, cho thấy việc sử dụng GPU xử lý song song đạt được yêu cầu của đề tài về việc tăng tốc kết chuỗi con trên chuỗi thời gian.
Bố cục luận văn
Các nội dung chính được trình bày trong luận văn bao gồm các chương như sau:
CHƯƠNG 1: GIỚI THIỆU VỀ ĐỀ TÀI
Chương này giới thiệu sợ lược các định nghĩa, các vấn đề có liên quan đến đề tài như: dữ liệu chuỗi thời gian (đặc điểm, ứng dụng, và các bài toán trên chuỗi thời gian), bài toán so trùng chuỗi con, bài toán kết chuỗi con, mục tiêu và giới hạn nghiên cứu của đề tài, tóm lược các kết quả đạt được, và phần cuối giới thiệu nội dung chính trong từng chương của toàn bộ luận văn
CHƯƠNG 2: CÁC CÔNG TRÌNH LIÊN QUAN
Chương này giới thiệu sơ lược một số nghiên cứu liên quan đến bài toán kết chuỗi con như: quá trình phân đoạn chuỗi thời gian, các điểm cực trị quan trọng, và một số nghiên cứu về song song hóa trên dữ liệu chuỗi thời gian Phần cuối chương giới thiệu phương pháp đề nghị kết chuỗi con
Chương 1: Giới thiệu về Đề tài
7 CHƯƠNG 3: CƠ SỞ LÝ THUYẾT
Chương này trình bày chi tiết về các cơ sở lý thuyết được áp dụng trong đề tài như: độ đo xoắn thời gian động, các phương pháp xác định các điểm cực trị quan trọng giúp cho quá trình phân đoạn chuỗi thời gian Ngoài ra, chương này còn trình bày về công nghệ GPU, kiến trúc cũng như mô hình lập trình song song dựa vào GPU và các phương pháp tiếp cần để tăng tốc xử lý khi tính toán độ đo xoắn thời gian động
CHƯƠNG 4 : PHƯƠNG PHÁP ĐỀ NGHỊ
Chương này giới thiệu chi tiết hướng tiếp cận trong việc giải bài toán kết chuỗi con theo hướng tiếp cận bằng phần cứng thuần túy và giải pháp kết hợp giữa phần mềm và phần cứng GPU Chương này cũng giới thiệu tổng quan về mô hình, kiến trúc và các thành phần quan trọng của ứng dụng kết chuỗi con dựa vào GPU
Chương này trình bày kết quả của một số loại thực nghiệm như: thực nghiệm về tính chính xác của phương pháp đề xuất cho kết quả bài toán kết chuỗi con, thực nghiệm so sánh hai giải thuật kết chuỗi con tuần tự và song song Bên cạnh đó, một số đánh giá, kết luận và đề xuất cũng sẽ được nêu lên dựa trên các kết quả thực nghiệm có được
Chương này trình bày tổng lược lại toàn bộ nội dung quan trọng của luận văn, các đóng góp chính của đề tài, và hướng phát triển
PHẦN TÀI LIỆU THAM KHẢO
Chương 2: Các Công trình nghiên cứu liên quan
CÁC CÔNG TRÌNH NGHIÊN CỨU LIÊN QUAN
Chương này giới thiệu sơ lược một số nghiên cứu liên quan như: độ đo tương tự, và các công trình liên quan đến kết chuỗi con Phần đầu chương nêu lên định nghĩa dạng tổng quát và một số thể hiện cụ thể của không gian độ đo như là độ đo Minkowski, độ đo xoắn thời gian động Phần kế đến trình bày tổng lược các công trình liên quan như ý tưởng phân đoạn chuỗi thời gian nhờ các điểm cực trị quan trọng, giải thuật kết chuỗi con trực tiếp Phần tiếp theo trình bày về các hướng tiếp cận giải quyết bài toán kết chuỗi con dựa trên GPU hiện nay Phần cuối chương sẽ giới thiệu phương pháp mà luận văn đề nghị để giải quyết bài toán kết chuỗi con trên dữ liệu chuỗi thời gian.
Các công trình liên quan đến độ đo khoảng cách
Về độ đo khoảng cách, trước đây hầu hết các công trình đều sử dụng độ đo Minkowski, hay cụ thể là Euclid Cách tính khoảng cách này khá đơn giản và dễ dàng, phù hợp cho những biến đổi DFT, DWT, … Tuy nhiên, kết quả của phép đo ảnh hưởng nhiều bởi nhiễu và không hiệu quả với những dữ liệu được đo ở nhiều thang do khác nhau
Hiện nay, đã có nhiều công trình sử dụng DTW kể từ khi nó được ứng dụng vào bài toán nhận dạng giọng nói [12], hai tác giả Berndt và Clifford đã lần đầu áp dụng độ do này cho bài toán liên quan đến chuỗi thời gian [3] Sau đó, cũng đã có nhiều công trình ([5], [6], [9], [13], [14]) sử dụng độ đo này Độ đo xoắn thời gian động DTW có cách tính khoảng cách Minkowski nhưng thay vì so trùng hai đường biểu diễn dữ liệu bằng cách tính khoảng cách từng cặp điểm 1 − 1 (điểm thứ 𝑖 của chuỗi thứ nhất so với điểm thứ 𝑖 của chuỗi thứ hai) thì một điểm có thể ánh xạ với nhiều điểm và ánh xạ này không tuyến tính Cách tính khoảng cách xoắn thời gian động sẽ được trình bày chi tiết trong phần 3.2 của luận văn Ưu điểm của phương pháp này là cho phép nhận dạng những mẫu có hình dạng giống nhau nhưng chiều dài hình dạng về mặt thời gian có thể khác nhau và hiệu quả hơn rất nhiều so với phương pháp tính khoảng cách theo Euclid, đặc biệt trong bài toán phân lớp, gom cụm hay trong các ứng dụng nhận dạng giọng nói
Tuy nhiên, nhược điểm của phương pháp này là độ phức tạp tính toán lớn cả về thời gian lẫn không gian bộ nhớ
Chương 2: Các Công trình nghiên cứu liên quan
9 Để khắc phục các nhược điểm này, các tác giả đã đưa nhiều phương pháp phần mềm nhằm tăng tốc quá trình tính toán cho DTW Có thể kể đến như ràng buộc dải của Sakoe và Chiba [12], ràng buộc hình bình hành của Itakura [15] hay bộ kỹ thuật UCR - DTW của Rakthanmanon và nhóm cộng sự [16].
Các công trình liên quan đến bài toán kết chuỗi con
Để thực hiện kết chuỗi con, trước hết cần phân đoạn chuỗi thời gian thành những chuỗi con Tuy nhiên, nhiều tác giả đưa ra những phương pháp phân đoạn và kết chuỗi thời gian quá cầu kỳ, phức tạp với thời gian tính toán lâu Do đó, luận văn đề nghị hướng tiếp cận cho bài toán bằng việc phân đoạn dựa vào các điểm cực trị quan trọng
(important extreme points) của tác giả Fink và Gandhi [17] và mô hình xác định tham số R của công trình [13] [14] để tìm các phân đoạn Định nghĩa về các điểm cực trị và giải thuật xác định chúng được giới thiệu trong phần 3.6 của luận văn
Về bài toán kết chuỗi con, phương pháp đầu tiên là cách kết chuỗi con trực tiếp
Chuỗi thời gian sẽ được kết trực tiếp bằng giải thuật lặp lồng nhau (nested loop) và thực hiện so trùng tất cả các chuỗi con có thể mà không có thêm bất kỳ kỹ thuật nào khác
Cách tiếp cận này bảo đảm tính đúng đắn và đẩy đủ của kết quả Tuy nhiên, hạn chế lớn nhất của phương pháp là đưa đến trường hợp vét cạn (brute force) trên dữ liệu chuỗi thời gian
Ngoài ra còn có các phương khác như phương pháp kết chuỗi con dưa trên dữ liệu đã lập chỉ mục ([18], [19], [20]) Các nhóm tác giả đề xuất lập chỉ mục không gian 𝑅 − 𝑇𝑟𝑒𝑒 và thực hiện thao tác kết chuỗi con hoặc thực hiện phép kết không gian trên dữ liệu đã được lập chỉ mục Tuy nhiên, tất cả các hướng tiếp cận lập chỉ mục dựa trên cây 𝑅 đều yêu cầu không gian bộ nhớ lớn cho việc duy trì và xây dựng lại cấu trúc chỉ mục 𝑅 − 𝑇𝑟𝑒𝑒 Mà việc xây dựng lại cây 𝑅 tốn nhiều tài nguyên Do đó, chi phí truy vấn tốn kém trong ngữ cảnh này.
Các công trình liên quan đến song song hóa dựa trên GPU
Hầu hết các cách tiếp cận kể trên đều hướng đến giải pháp bằng phần mềm Các phương pháp có thể đưa kết quả nhanh nhưng độ chính xác chỉ mang tính xấp xỉ, hơn nữa khó áp dụng với dữ liệu dạng luồng (streaming data) Vì thế, một số tác giả đã tiếp
Chương 2: Các Công trình nghiên cứu liên quan
10 cận theo hướng tăng tốc bằng phần cứng như kỹ thuật xử lý song song dựa vào GPU
([5], [6], [8], [9], [10], [11]) cho những bài toán khai phá dữ liệu liên quan đến chuỗi thời gian tĩnh, cũng như dữ liệu luồng
Theo như giải pháp của Sart và các cộng sự năm 2010 [6] cho bài toán so trùng chuỗi con, các tác giả đã thực hiện giải thuật vét cạn song song trên GPU Trong đó, mỗi luồng của GPU sẽ đảm nhận tính toán độc lập một ma trận DTW, kết quả trả về từ GPU sẽ là một mảng các giá trị khoảng cách DTW Host hay CPU sẽ so sánh các giá trị này với ngưỡng cho trước để tìm ra các chuỗi con trùng với chuỗi truy vấn Cụ thể, hiện thực DTW trên GPU của tác giả đề xuất bao gồm ba công đoạn sau:
1 Sao chép dữ liệu từ CPU sang GPU
2 CPU kích hoạt các hạt nhân (kernel) của GPU để xử lý song song
3 Sao chép kết quả trả về từ GPU cho CPU Ở bước một, CPU sao chép toàn bộ chuỗi thời gian T vào bộ nhớ toàn cục của
GPU Nếu kích thước của T lớn hơn bộ nhớ sẵn dùng của thiết bị thì nó được chia thành những lô (batch) nhỏ hơn và xử lý mỗi lần một lô Quá trình này có thể gây ra độ trễ, nhưng không ảnh hưởng nhiều đến xử lý thời gian thực vì thời gian sao chép thường chỉ khoảng vài phần ngàn giây (milisecond) Cho nên, việc sao chép từng lô một có thể chịu được tốc độ dữ liệu đến hàng trăm hertz mà không làm tràn bộ đệm Vì chuỗi truy vấn
Q được cố định và sử dụng để so trùng với tất cả các lô, nên nó được sao chép vào bộ nhớ toàn cục ngay từ đầu và giữ nó ở đó trong suốt quá trình thực thi Ở bước thứ hai, CPU gọi kernel trong GPU để xử lý song song Mỗi luồng trong kernel sẽ xử lý một cửa sổ trượt (sliding window) trong T qua hai bước: truy cập vào của sổ trượt và tính khoảng cách DTW với chuỗi truy vấn Q Nếu chúng ta nhóm các luồng chịu trách nhiệm cho các cửa sổ trượt liên tiếp trong một khối, thì việc truy cập bộ nhớ bằng những luồng này sẽ dẫn đến các truy cập được kết hợp lại Tức là, việc truy cập vùng nhớ chỉ thực hiện một lần cho các luồng thuộc một khối Như Hình 2.1, một khối gồm bốn luồng cho thấy việc truy cập bộ nhớ lần đầu bởi những luồng này chỉ đọc một lần thay vì là bốn, bởi vì các luồng hoạt động trên các vị trí tiếp giáp trong bộ nhớ
Chương 2: Các Công trình nghiên cứu liên quan
11 Hình 2.1: Phân chia công việc giữa các luồng Truy cập bộ nhớ được kết hợp bởi các luồng trùng lắp [6]
Mặt khác, Q là một chuỗi thời gian truy vấn cố định và theo định nghĩa, nó không bị thay đổi trong quá trình thực thi Hơn nữa Q nhỏ hơn nhiều so với T nên nó có thể vừa với bộ nhớ chia sẻ của thiết bị GPU Bộ nhớ chia sẻ là bộ nhớ đặc biệt có sẵn trong một lõi trong bộ xử lý đa nhân của thiết bị GPU Bộ nhớ chia sẻ nhanh hơn 150x so với bộ nhớ toàn cục Thông thường, bộ nhớ chia sẻ là nhỏ hơn nhiều so với bộ nhớ toàn cục và do đó là nơi lý tưởng cho chuỗi thời gian truy vấn
Cuối cùng trong bước thứ ba, khi tất cả các luồng kết thúc thực thi, CPU sao chép kết quả của khoảng cách DTW trở lại bộ nhớ hệ thống và xử lý cho ra kết quả cuối cùng của bài toán so trùng chuỗi con.
Khai phá dữ liệu chuỗi thời gian
Để có thể hiểu được về dữ liệu chuỗi thời gian, chúng ta có một số định nghĩa sau: Định nghĩa 1: Dữ liệu chuỗi thời gian T được định nghĩa là một chuỗi có thứ tự n giá trị:
Một chuỗi thời gian thường là kết quả của việc quan sát một quá trình mà các giá trị thu thập từ sự đo đạc thực hiện tại các khoảng thời gian đều nhau 𝑡 𝑖 và theo một tỷ lệ lấy mẫu nhất định Do đó, một chuỗi thời gian có thể được định nghĩa là một tập hợp các điểm giá trị liên tục Chuỗi này có thể đơn biến hoặc đa biến khi trong cùng một khoảng thời gian, dữ liệu được thu thập tại nhiều chiều trong không gian
Chuỗi thời gian có thể bao gồm toàn bộ dữ liệu được cung cấp bởi việc quan sát quá trình và có thể có độ dài cụ thể hay còn được gọi là dữ liệu tĩnh (static data) Trong trường hợp dữ liệu luồng (streaming data), dữ liệu chuỗi thời gian có độ dài không xác định Đối với loại dữ liệu này, việc khai phá thường chỉ xem xét trên chuỗi con thay vì là toàn bộ chuỗi
Chương 3: Cơ sở lý thuyết
13 Định nghĩa 2: Cho một chuỗi thời gian 𝑇 = (𝑡 1 , 𝑡 2 , … , 𝑡 𝑛 ) có độ dài n, một chuỗi con S của T là một chuỗi có chiều dài m, 𝑚 ≤ 𝑛, gồm một tập hợp các điểm thời gian liên tục từ T:
𝑆 = (𝑡 𝑘 , 𝑡 𝑘+1 , … , 𝑡 𝑚 ), 1 ≤ 𝑘 ≤ 𝑛 − 𝑚 + 1 Một tập hợp các chuỗi con của T có cùng độ dài m ký hiệu là 𝑆 𝑇 𝑚 Định nghĩa 3: Độ tương tự 𝐷(𝑇, 𝑈) giữa hai chuỗi thời gian T và U là một hàm mà đầu vào là hai chuỗi thời gian và đầu ra là một khoảng cách d giữa hai chuỗi thời gian này
Khoảng cách này phải là giá trị không âm, 𝐷(𝑇, 𝑈) ≥ 0 Nếu khoảng cách này thỏa mãn tính chất đối xứng, 𝐷(𝑇, 𝑈) = 𝐷(𝑈, 𝑇), và điều kiện bất đẳng thức tam giác, 𝐷(𝑇, 𝑉) ≤ 𝐷(𝑇, 𝑈) + 𝐷(𝑈, 𝑉), thì khoảng cách này được gọi là một độ đo (metric)
Những vấn đề cần được quan tâm khi nghiên cứu về dữ liệu chuỗi thời gian:
Dữ liệu rất lớn : dữ liệu điện tâm đồ trong một giờ có thể lên đến 1 Gigabyte, dữ liệu ghi nhận các truy cập trên một trang mạng khoảng 5 Gigabyte/1 tuần, dữ liệu thu thập trên tàu con thoi trong không gian lên đến 158 Gigabyte
Phụ thuộc cách đánh giá độ tương tự : việc định nghĩa độ tương tự phụ thuộc vào người dùng, nghĩa là có rất nhiều cách tính toán độ tương tự giữa hai đối tượng dữ liệu được đề nghị Tùy từng ứng dụng cụ thể sẽ có cách đo độ tương tự phù hợp nhất Ví dụ với không gian hình ảnh thì cách đánh giá theo hàm tính độ tương tự Hausdorff là hiệu quả, với không gian chuỗi ký tự thì độ đo tương tự Edit (Edit distance) là hiệu quả, với không gian R n thì độ đo Euclid (Euclidean distance) hay độ đo Manhattan (Manhattan distance) được đánh giá là hiệu quả
Dữ liệu thường không đồng nhất : điều này là do các loại dữ liệu khác nhau về định dạng, tần suất lấy mẫu khác nhau, dữ liệu bị nhiễu, thiếu một vài giá trị, dữ liệu không sạch
Chương 3: Cơ sở lý thuyết
3.1.2 Các bài toán trên dữ liệu chuỗi thời gian
3.1.2.1 Khai phá dữ liệu chuỗi thời gian
Phân lớp (Classification): Cho trước một chuỗi thời gian 𝑄 chưa gán nhãn và 𝑀 lớp, mỗi lớp chứa 𝑘 chuỗi thời gian có cùng một số đặc trưng nhất định dựa trên độ đo khoảng cách đã định nghĩa trước Bài toán phân lớp tiến hành phân loại chuỗi thời gian 𝑄 vào một trong số 𝑀 lớp đó Trong bài toán này, các ứng dụng chủ yếu sử dụng các chuỗi thời gian đã thống kê trong quá khứ để phân loại dữ liệu tương lai
Gom cụm (clustering): Gom cụm là phân hoạch dữ liệu chuỗi thời gian thành các nhóm sao cho các thành phần trong cụm là tương tự nhau còn các thành phần khác cụm là rất khác nhau
Dự báo (predicting/forcasting): Cho trước một chuỗi thời gian 𝑄 có 𝑛 điểm dữ liệu Bài toán này sẽ dự báo giá trị của chuỗi thời gian liên tiếp từ thời điểm 𝑛 + 1 đến 𝑛 + 𝑘
Phát hiện bất thường (novelty detection): Bài toán này xác định các chuỗi con bất thường (unusual/ abnormal/ discord/novel) là chuỗi con khác nhất so với các chuỗi con khác trong chuỗi thời gian
Phát hiện mô típ (motif detection): Bài toán này xác định các mô típ (mẫu lặp) là chuỗi con thường lặp lại nhiều nhất trong chuỗi thời gian
Ngoài các bài toán kể trên, ứng dụng khai phá dữ liệu chuỗi thời gian còn tồn tại một số bài toán khác như: khai phá luật kết hợp (association rules mining), truy vấn dựa trên nội dung (query by content)
3.1.2.2 So trùng chuỗi con trên dữ liệu chuỗi thời gian
Các bài toán vừa liệt kê đa phần sử dụng kết quả của bài toán tìm kiếm tương tự so trùng mẫu con (subseries matching) để làm đầu vào phục vụ quá trình tính toán
1 So trùng toàn chuỗi (whole sequence matching)
Độ đo xoắn thời gian động DTW
Đặc điểm chính của độ đo xoắn thời gian động DTW là ánh xạ không tuyến tính khi tính khoảng cách giữa hai chuỗi thời gian có độ dài khác nhau
Giả sử có hai chuỗi thời gian 𝑄 và 𝐶 có chiều dài lần lượt là 𝑛 và 𝑚 với:
𝑄 = (𝑞 1 , 𝑞 2 , … , 𝑞 𝑖 , … , 𝑞 𝑛 ) và 𝐶 = (𝑐 1 , 𝑐 2 , … , 𝑐 𝑗 , … , 𝑐 𝑚 ) Để tính toán khoảng cách DTW giữa hai chuỗi trên, ta xây dựng một ma trận 𝐷 có kích thước 𝑚 × 𝑛 gọi là ma trận xoắn (warping matrix) Trong đó, phần tử 𝐷 𝑖𝑗 𝑑(𝑞 𝑖 , 𝑐 𝑗 ) là khoảng cách giữa hai điểm 𝑞 𝑖 và 𝑐 𝑗 (với khoảng cách Euclid thì 𝑑(𝑞 𝑖 , 𝑐 𝑗 ) (𝑞 𝑖 − 𝑐 𝑗 )) Ma trận này được minh họa như Hình 3.2 Đường xoắn (warping path) W là một tập các phần tử liên tục của ma trận định nghĩa một ánh xạ giữa 𝑄 và 𝐶 Phần tử thứ 𝑘 của 𝑊 được định nghĩa là 𝑤 𝑘 = (𝑖, 𝑗) 𝑘 , vì vậy ta có:
𝑊 = (𝑤 1 , 𝑤 2 , … , 𝑤 𝑘 ) với 𝑚𝑎𝑥(𝑛, 𝑚) ≤ k ≤ 𝑚 + 𝑛– 1 Theo định nghĩa, đường xoắn tối ưu là đường xoắn cho giá trị chi phí xoắn (khoảng cách xoắn) nhỏ nhất:
Chương 3: Cơ sở lý thuyết
Hình 3.2: Cách tính khoảng cách xoắn thời gian động Đường xoắn tối ưu này có thể tìm được bằng cách sử dụng phương pháp quy hoạch động (dynamic programming) Công thức truy hồi cho khoảng cách tích lũy (cumulative distance) 𝛾(𝑖, 𝑗) được định nghĩa như sau:
Trong đó, khoảng cách tích lũy 𝛾(𝑖, 𝑗) tại ô (𝑖, 𝑗) của ma trận được tính bằng khoảng cách 𝑑(𝑖, 𝑗) của ô tương ứng cộng với giá trị nhỏ nhất của khoảng cách tích lũy của các ô liền kề trước ô đó Khoảng cách xoắn thời gian động của hai chuỗi thời gian 𝑄 và 𝐶 là căn bậc hai của khoảng cách tích lũy tại ô có chỉ số là (𝑚, 𝑛)
Trong thực tế, ta không cần phải tính tất cả đường xoắn vì nhiều đường xoắn trong số đó tương ứng với những đường xoắn không hợp lý (ví dụ, một điểm trong một chuỗi điện tâm đồ ánh xạ với toàn bộ các điểm trong một chuỗi điện tâm đồ khác là không hợp lý) Thay vào đó, ta xem xét những ràng buộc sau để làm giảm số lượng đường xoắn cần phải xét trong quá trình so trùng
- Điều kiện biên: 𝑤1 = (1, 1) và 𝑤𝑘 = (𝑚, 𝑛), ràng buộc này yêu cầu đường xoắn phải bắt đầu và kết thúc ở hai góc đối diện của ma trận xoắn
Chương 3: Cơ sở lý thuyết
18 - Tính liên tục: cho 𝑤𝑘 = (𝑎, 𝑏), thì 𝑤𝑘−1 = (𝑎′, 𝑏′) trong đó 𝑎– 𝑎′ ≤ 1 và 𝑏 − 𝑏’
≤ 1 Ràng buộc này yêu cầu đường xoắn phải di chuyển giữa những ô liền kề (kể cả những ô liền kề theo đường chéo)
- Tính đơn điệu tăng: cho 𝑤𝑘 = (𝑎, 𝑏), thì 𝑤𝑘−1 = (𝑎′, 𝑏′) với 𝑎– 𝑎′ ≥ 0 và 𝑏– 𝑏′
≥ 0 Ràng buộc này yêu cầu các điểm trong 𝑊 phải tăng đơn điệu theo thời gian
Một số ưu điểm và nhược điểm của khoảng cách DTW được tóm tắt như sau:
- Khoảng cách DTW cho kết quả so trùng chính xác hơn so với khoảng cách Euclid
- Khoảng cách DTW cho phép nhận dạng các mẫu có hình dạng giống nhau nhưng “lệch nhau” về mặt thời gian
- Khoảng cách DTW cho phép tính khoảng cách trong trường hợp hai chuỗi có chiều dài không bằng nhau
- Nhược điểm lớn nhất của khoảng cách DTW là độ phức tạp tính toán lớn
Với hai chuỗi 𝑄 và 𝐶 có chiều dài lần lượt là m và n, để tính khoảng cách DTW của hai chuỗi này, ta phải xây dựng ma trận D có kích thước 𝑚 × 𝑛 và tính khoảng cách tích lũy tương ứng với hàm 𝛾 cho mọi ô trong ma trận đó Như vậy độ phức tạp tính toán của giải thuật tính DTW sử dụng phương pháp quy hoạch động là O(mn)
- DTW không thỏa mãn tính chất bất đẳng thức trong tam giác của hàm khoảng cách.
Ràng buộc đường xoắn độ đo thời gian động
Việc tính độ đo xoắn thời gian động có chi phí lớn vì phải tìm đường xoắn đạt giá trị nhỏ nhất trong ma trận bằng phương pháp quy hoạch động Độ phức tạp của giải thuật này là 𝑂(𝑚𝑛) Tuy nhiên, đường xoắn tối ưu thường gần đường chéo của ma trận
Vì vậy, ứng dụng có thể giảm bớt chi phí tính toán bằng cách giới hạn phạm vi tìm
Chương 3: Cơ sở lý thuyết
19 đường xoắn tối ưu thay vì tìm trên toàn bộ ma trận Hai ràng buộc về đường xoắn phổ biến là ràng buộc Sakoe-Chiba và ràng buộc hình bình hành Itakura
3.3.1 Ràng buộc dải Sakoe-Chiba
Ràng buộc này được đề xuất bởi hai tác giả Sakoe và Chiba (1978) [12] Gọi đường xoắn tối ưu là tập các ô trong ma trận của hai chuỗi thời gian:
Trong đó w k = (i, j) k Ràng buộc Sakoe-Chiba yêu cầu |i – j| ≤ r, trong đó 𝑟 là một số nguyên dương cho trước được gọi là cửa sổ xoắn
3.3.2 Ràng buộc hình bình hành Itakura
Ràng buộc hình bình hành Itakura (Itakura Paralelogram) được đề xuất bởi
Itakura (1975) [15] Ràng buộc này cũng định nghĩa đường xoắn cũng bao gồm một tập các ô trong ma trận của hai chuỗi thời gian:
Trong đó w k = (i, j) k Ràng buộc hình bình hành Itakura yêu cầu |i – j| ≤ r, trong đó 𝑟 là một hàm biến thiên theo thời gian
Hình 3.3 mô tả hình dạng xoắn ứng với từng loại ràng buộc:
Hình 3.3: (Trái) Ràng buộc Sakoe-Chiba; (Phải) Ràng buộc Itakura.
Ràng buộc chặn dưới
Việc giảm số lần tính toán khoảng cách DTW thực tế là một chiến lược hiệu quả của việc tăng tốc bằng kỹ thuật phần mềm trong bài toán tìm kiếm tương tự dựa trên DTW Một trong những cách tiếp cận phổ biến nhất là cắt tỉa những chuỗi con dựa vào
Chương 3: Cơ sở lý thuyết
20 ràng buộc chặn dưới Ở đây "chặn dưới" có nghĩa là chặn dưới của khoảng cách DTW của chuỗi con và chuỗi truy vấn Trong quá trình tìm kiếm tương tự, nếu chặn dưới của một chuỗi con vượt quá ngưỡng đã cho, khoảng cách DTW của chuỗi con với chuỗi truy vấn đó sẽ lớn hơn ngưỡng đã cho ([7], [11], [20], [21]) Độ phức tạp tính toán của chặn dưới thường thấp hơn nhiều so với khoảng cách DTW, vì vậy kỹ thuật này có thể sử dụng để loại bỏ bớt việc tính các khoảng cách DTW của các chuỗi con không cần thiết, trước khi tính toán các khoảng cách DTW thực tế cần thiết của những chuỗi con còn lại
Có rất nhiều kỹ thuật ràng buộc chặn dưới, độ chặt (tighness) và độ phức tạp của chúng cũng khác nhau Bộ kỹ thuật UCR DTW của Rakthanmanon và các cộng sự [16] đề xuất một chặn dưới theo dạng xếp tầng (Cascading Lower Bound), bao gồm LB_Kim
[20] đơn giản, LB_Keogh [21] và LB_Keogh đảo ngược [16] Độ phức tạp của bộ ba chặn dưới này tăng lên cùng với độ chặt Nếu kết quả của một chặn dưới không đủ lớn để cắt bỏ một chuỗi con, thì chặn dưới kế tiếp sẽ được thực thi
3.4.1 Chặn dưới Kim đơn giản
Hàm xác định chặn dưới LB_Kim được giới thiệu bởi Kim và các cộng sự [20], hoạt động bằng cách trích xuất một vector đặc trưng gồm 4 điểm từ mỗi chuỗi Các đặc trưng là các phần tử đầu tiên và cuối cùng, cùng với các phần tử có giá trị tối đa và tối thiểu của chuỗi Khoảng cách chênh lệch lớn nhất của các phần tử tương ứng được xem là chặn dưới Hình 3.4 minh họa ý tưởng xác định LB_Kim, chênh lệch bình phương giữa điểm đầu tiên (A), điểm cuối cùng (D), điểm tối thiểu (B) và điểm cực đại (C) của hai chuỗi được trả về dưới dạng chặn dưới Việc xác định các phần tử có giá trị lớn nhất hay nhỏ nhất khiến cho độ phức tạp của giải thuật là O(n), với n là chiều dài của chuỗi
Hình 3.4: Minh họa kỹ thuật xác định LB_Kim [21]
Chương 3: Cơ sở lý thuyết
21 Tuy nhiên, đối với chuỗi thời gian chuẩn hóa, hai điểm tối thiểu (B) và điểm cực đại (C) có xu hướng nhỏ và không cần thiết để tính toán, và việc bỏ qua chúng cho phép độ phức tạp chỉ là O(1) Theo đó, để đơn giản hóa việc tính toán chặn dưới và làm cho quá trình cắt tỉa hiệu quả hơn, LB_Kim đơn giản chỉ sử dụng các tuple c đầu tiên và các tuple c cuối cùng của chuỗi con và mẫu để tính chặn dưới như minh họa Hình 3.5
Hình 3.5: Minh họa kỹ thuật xác định LB_Kim đơn giản [11]
Giá trị c này thường rất nhỏ (1 ≤ c ≤ 6) Trong công trình [16] của Rakthamanon, giá trị c được chọn là 3 Vì thời gian tính toán LB_Kim là không đổi O(1) và không liên quan đến độ dài của chuỗi con và chuỗi truy vấn, việc tính toán LB_Kim của mọi chuỗi con và chuỗi truy vấn là độc lập, do đó việc tính toán có thể diễn ra gần như ngay tức khắc
3.4.2 Chặn dưới Keogh và chặn dưới Keogh đảo ngược
Hàm xác định chặn dưới LB_Keogh tạo ra một đường bao cận trên (upper envelope) và một đường bao cận dưới (lower envelope) của mẫu chuỗi truy vấn 𝑄, và sử dụng tổng của các phần mà trong đó chuỗi con vượt quá hai đường bao này để xác định chặn dưới Như minh họa Hình 3.7, các phần được gạch đứng là các khoảng cách được dùng để tính giá trị chặn dưới
LB_Keogh sử dụng các ràng buộc dải Sakoe-Chiba hoặc ràng buộc hình bình hành Itakura để tạo ra hai chuỗi mới, U và L:
Chương 3: Cơ sở lý thuyết
Trong đó, 𝑟 là giá trị của các ràng buộc Giá trị này độc lập với 𝑖 nếu đó là ràng buộc dải Sakoe-Chiba hoặc là một hàm phụ thuộc vào 𝑖 nếu đó là ràng buộc hình bình hành Itakura 𝑈 và 𝐿 chính là hai đường bao cận trên và cận dưới của chuỗi truy vấn
Chúng sẽ bao đóng lấy chuỗi truy vấn 𝑄 như Hình 3.6 Lưu ý rằng mặc dù ràng buộc dải Sakoe-Chiba có chiều rộng không đổi, nhưng đường bao tương ứng thường không có độ dày đồng nhất Đặc biệt, đường bao rộng hơn khi chuỗi tự truy vấn thay đổi nhanh chóng và hẹp hơn khi chuỗi truy vấn ở những vùng cực trị
Hình 3.6: Đường bao U, L A) được tạo bởi ràng buộc dải Sakoe-Chiba và B) được tạo bởi hình bình hành Itakura [21]
Sau khi có được các đường bao, chặn dưới có thể xác định bởi công thức sau:
Hàm này có thể dễ dàng được hình dung như là khoảng cách Euclid giữa bất kỳ phần nào của chuỗi con tương ứng không nằm trong đường bao với phần tương ứng gần nhất (trực giao) của đường bao như minh họa ở Hình 3.7
LB_Keogh đảo ngược là trường hợp ngược lại đối với cách tính chặn dưới kể trên
Thay vì các đường bao được xây dựng xung quanh chuỗi truy vấn 𝑄 và chặn dưới được tính bởi những phần của chuỗi con mà không nằm trong đường bao, LB_Keogh đảo
Chương 3: Cơ sở lý thuyết
23 ngược được xây dựng từ chuỗi dữ liệu 𝐶 và chặn dưới được tính bởi những phần của chuỗi truy vấn 𝑄 mà không nằm trong đường bao Hình 3.8 mô tả sự khác biệt giữa LB_Keogh thông thường và LB_Keogh đảo ngược Đường bao của LB_Keogh thông thường được xây dựng xung quanh truy vấn, và khoảng cách giữa 𝐶 và điểm gần hơn của {𝑈, 𝐿} đóng vai trò như một chặn dưới Tuy nhiên, chúng ta có thể đảo ngược các vai trò sao cho đường bao được xây dựng xung quanh 𝐶 và khoảng cách giữa 𝑄 và điểm gần hơn của {𝑈, 𝐿} là chặn dưới Đây được gọi là LB_Koegh đảo ngược
Hình 3.7: Minh họa kỹ thuật xác định LB_Keogh [21]
Hình 3.8: (Trái) LB_Keogh thông thường; (Phải) LB_Keogh đảo ngược [16].
Kỹ thuật từ bỏ sớm
Trong công trình [16] của Rakthamanon còn sử dụng thêm một kỹ thuật khác là chiến lược từ bỏ sớm để tránh việc phải tính một cách đầy đủ toàn bộ ma trận xoắn DTW sau khi đã cắt tỉa
Chương 3: Cơ sở lý thuyết
24 Hình 3.9: Chiến lược từ bỏ sớm
Ta có thể tính toán DTW từ trái qua phải, và khi tính toán từng bước từ 1 đến K, ta có thể tính tổng tích lũy một phần (partial) DTW và LB_Keogh từ K + 1 đến n Như Hình 3.9, ở phía trên bên trái, ta thấy một phép tính LB_Keogh đã hoàn thành, và bên dưới nó, ta chuẩn bị bắt đầu một phép tính DTW đầy đủ Ở bên phải, ta có thể tưởng tượng đường đứt nét di chuyển từ trái sang phải Nếu ta tính tổng LB_Keogh từ bên phải của đường đứt nét (trên cùng) và phần đóng góp DTW từng phần (tăng dần) từ phía bên trái của đường đứt nét (dưới), đây sẽ là chặn dưới đối với DTW(Q, C)
Tóm lại, phần tổng DTW (Q 1: K , C 1: K ) + LB_Keogh (Q K+1: n , C K+1: n ) này là chặn dưới của khoảng cách DTW thật sự, chẳng hạn DTW (Q 1: n , C 1: n ) Hay nói cách khác, giá trị này là được dùng trong chiến lược từ bỏ sớm Trong quá trình tính toán khoảng cách DTW, bất cứ lúc nào mà giá trị này vượt quá ngưỡng, việc tính toán bị dừng ngay lập tức và cắt tỉa đoạn chuỗi C này.
Các điểm Cực trị quan trọng
Trong công trình của mình, tác giả Fink và các cộng sự [17] đã đưa ra định nghĩa các điểm cực trị quan trọng Có hai loại cực trị là cực đại và cực tiểu Luận văn chỉ giới thiệu định nghĩa về cực tiểu, các điểm cực đại hoàn toàn tương tự
3.6.1 Các điểm Cực trị thông thường
Theo đó, ban đầu các tác giả định nghĩa các điểm cực trị (cực đại và cực tiểu) trong chuỗi thời gian Với chuỗi thời gian 𝐴 = 𝑎 1 , 𝑎 2 , … , 𝑎 𝑛 , điểm 𝑎 𝑖 (1 < 𝑖 < 𝑛) được gọi là:
Chương 3: Cơ sở lý thuyết
25 - Cực tiểu nghiêm cách (strict minimum) nếu 𝑎 𝑖 < 𝑎 𝑖−1 và 𝑎 𝑖 < 𝑎 𝑖+1 - Cực tiểu bên trái (left minimum) nếu 𝑎 𝑖 < 𝑎 𝑖−1 và tồn tại chỉ số 𝑟𝑖𝑔ℎ𝑡 > 𝑖 sao cho 𝑎 𝑖 = 𝑎 𝑖+1 = = 𝑎 𝑟𝑖𝑔ℎ𝑡 < 𝑎 𝑟𝑖𝑔ℎ𝑡+1 - Cực tiểu phải (right minimum) nếu 𝑎 𝑖 < 𝑎 𝑖+1 và tồn tại chỉ số 𝑙𝑒𝑓𝑡 < 𝑖 sao cho 𝑎 𝑙𝑒𝑓𝑡−1 > 𝑎 𝑙𝑒𝑓𝑡 = = 𝑎 𝑖−1 = 𝑎 𝑖 - Cực tiểu phẳng (flat minimum) nếu tồn tại đồng thời chỉ số 𝑙𝑒𝑓𝑡 < 𝑖 và
𝑟𝑖𝑔ℎ𝑡 > 𝑖 sao cho 𝑎 𝑙𝑒𝑓𝑡−1 > 𝑎 𝑙𝑒𝑓𝑡 = = 𝑎 𝑖 = = 𝑎 𝑟𝑖𝑔ℎ𝑡 < 𝑎 𝑟𝑖𝑔ℎ𝑡 + 1 Định nghĩa tương tự, ta có các điểm cực đại nghiêm cách (strict maximum), cực đại trái (left maximum), cực đại phải (right maximum) và cực đại phẳng (flat maximum)
Hình 3.10 minh họa các điểm cực trị trong công trình của Fink và các cộng sự
Hình 3.10: Các loại cực trị: (a) Nghiêm cách, (b) Trái và phải, (c) Phẳng [17]
3.6.2 Các điểm Cực trị quan trọng
Dựa vào tham số 𝑅, các tác giả đã đưa ra định nghĩa cho các điểm cực trị được gọi là quan trọng Với hàm khoảng cách cho trước 𝑑 và một giá trị 𝑅 (𝑅 > 0), điểm 𝑎 𝑖 thuộc chuỗi thời gian 𝐴 = 𝑎 1 , , 𝑎 𝑛 được gọi là cực tiểu quan trọng (important minimum) nếu và chỉ nếu tồn tại đồng thời các chỉ số 𝑖𝑙 và 𝑖𝑟 (𝑖𝑙 < 𝑖 < 𝑖𝑟) sao cho
𝑎 𝑖 là cực tiểu trong khoảng 𝑎 𝑖𝑙 , , 𝑎 𝑖𝑟 , 𝑑𝑖𝑠𝑡(𝑎 𝑖 , 𝑎 𝑖𝑙 ) ≥ 𝑅 và 𝑑𝑖𝑠𝑡(𝑎 𝑖 , 𝑎 𝑖𝑟 ) ≥ 𝑅 Hay, một cách cụ thể hơn, điểm 𝑎 𝑖 được gọi là:
- Cực tiểu quan trọng nghiêm cách nếu và chỉ nếu tồn tại đồng thời các chỉ số
𝑖𝑙 và 𝑖𝑟 (𝑖𝑙 < 𝑖 < 𝑖𝑟) sao cho 𝑎 𝑖 là cực tiểu nghiêm cách trong khoảng 𝑎 𝑖𝑙 , , 𝑎 𝑖−1 và 𝑎 𝑖+1 , , 𝑎 𝑖𝑟 , 𝑑𝑖𝑠𝑡(𝑎 𝑖 , 𝑎 𝑖𝑙 ) ≥ 𝑅 và 𝑑𝑖𝑠𝑡(𝑎 𝑖 , 𝑎 𝑖𝑟 ) ≥ 𝑅
- Cực tiểu quan trọng bên trái nếu nó không là cực tiểu quan trọng nghiêm cách và tồn tại đồng thời các chỉ số 𝑖𝑙 và 𝑖𝑟 (𝑖𝑙 < 𝑖 < 𝑖𝑟) sao cho 𝑎 𝑖 là cực tiểu nghiêm cách trong khoảng 𝑎 𝑖𝑙 , , 𝑎 𝑖−1 , 𝑎 𝑖 không lớn hơn từng giá trị
Chương 3: Cơ sở lý thuyết
26 trong khoảng 𝑎 𝑖+1 , , 𝑎 𝑖𝑟 , 𝑑𝑖𝑠𝑡(𝑎 𝑖 , 𝑎 𝑖𝑙 ) ≥ 𝑅 và 𝑑𝑖𝑠𝑡(𝑎 𝑖 , 𝑎 𝑖𝑟 ) ≥ 𝑅 Tương tự, ta có khái niệm cực tiểu quan trọng bên phải (right important minimum)
- Cực tiểu quan trọng phẳng nếu nó không phải là cực tiểu quan trọng nghiêm cách, không là cực tiểu quan trọng bên trái, không là cực tiểu quan trọng bên phải Định nghĩa tương tự, ta có các khái niệm cực đại quan trọng nghiêm cách (strict important maximum), cực đại quan trọng bên trái và bên phải (right and left important maximum), và cực đại quan trọng phẳng (flat important maximum)
Hình 3.11 minh họa các điểm cực trị và cực trị quan trọng theo định nghĩa của tác giả với các tham số là 𝑑 = |𝑎 − 𝑏| và 𝑅 = 3 Theo đó, định nghĩa điểm cực trị quan trọng đã loại bỏ điểm ứng với chỉ số 9 trong chuỗi thời gian khỏi tập hợp các điểm cực trị Cách xác định này chỉ tốn một lượt duyệt qua toàn bộ chuỗi thời gian là có thể xác định được tất cả thông số của một điểm cực trị
Hình 3.11: Các điểm cực trị (trên) và cực trị quan trọng (dưới) với khoảng cách d = |a - b| và R = 3
Mã giả mô tả giải thuật xác định các điểm cực trị quan trọng được trình bày như Hình 3.12 Tham số 𝑅 là giá trị quan trọng để xác định một điểm có phải là cực trị hay không Nếu 𝑅 lớn thì số lượng điểm cực trị giảm Nếu 𝑅 bé thì số lượng điểm cực trị tăng Việc này sẽ ảnh hưởng đến quá trình phân đoạn và do đó làm ảnh hưởng đến tập dữ liệu kết quả Trong phần kế tiếp, luận văn sẽ đề cập đến phương pháp xác định 𝑅 dựa vào đại lượng độ lệch chuẩn lấy mẫu của lý thuyết thống kê trong công trình [13] [14]
Chương 3: Cơ sở lý thuyết
IMPORTANT-EXTREMA – Tìm các điểm cực trị quan trọng Input: Chuỗi a1, …, an, hàm khoảng cách dist, và giá trị R
Output: Các giá trị, chỉ số, và loại cực trị quan trọng i = FIND-FIRST; if i < n and a i < a 1 then i = FIND-MIN(i) while i < n do i = FIND-MAX(i); i = FIND-MIN(i)
FIND-FIRST – Tìm điểm cực trị quan trọng đầu tiên i = 1; leftMin = 1; rightMin = 1; leftMax = 1; rightMax = 1; while i < n and dist (a i+1 , a leftMax ) < R and dist (a i+1 , a leftMin ) < R do i = i + 1; if a leftMin > a i then leftMin = i; if a rightMin ≥ a i then rightMin = i; if a leftMax < a i then leftMax = i; if a rightMax ≤ a i then rightMax = i; i = i + 1; if i < n and a i > a 1 then OUT-EXT (leftMin, rightMin, “min”); if i < n and a i < a 1 then OUT-EXT (leftMax, rightMax, “max”); return i;
FIND-MIN (i) – Tìm điểm cực tiểu quan trọng sau điểm thứ i left = i; right = i; while i < n and (a i+1 > a left or dist (a i+1 , a left ) < R) do i = i + 1; if a left > a i then left = i; if a right ≥ a i then right = i;
OUT-EXT (left, right, “min”); return i + 1;
FIND-MAX (i) – Tìm điểm cực đại quan trọng sau điểm thứ i left = i; right = i; while i < n and (a i+1 > a left or dist (a i+1 , a left ) < R) do i = i + 1; if a left < a i then left = i; if a right ≤ a i then right = i;
OUT-EXT (left, right, “max”); return i + 1;
OUT-EXT (left, right, min-or-max) – Xuất kết quả cực trị if left = right then output (a right , right, min-or-max, “strict”); else output (a left , left, min-or-max, “left”); for flat = left+1 to right-1 do if a flat = a left then output (a flat , flat, min-or-max, “flat”); output (a right , right, min-or-max, “right”);
Hình 3.12: Giải thuật tìm kiếm các điểm cực trị quan trọng
Chương 3: Cơ sở lý thuyết
3.6.3 Mô hình xác định tham số R
Như đã đề cập ở các mục trước, 𝑅 là một khoảng giá trị mà trong giới hạn đó một điểm có được xem xét là cực trị hay không Một cách trực quan như Hình 3.13, ta thấy rằng nếu thu hẹp 𝑅 thì số lượng cực trị gia tăng, mở rộng 𝑅 thì số lượng cực trị giảm xuống
Hình 3.13: Tham số R giúp xác định các điểm cực trị quan trọng [17]
Tham số 𝑅 được xác định qua công thức sau:
Trong đó, 𝑆𝐷 là độ lệch chuẩn lấy mẫu dựa vào lý thuyết thống kê Không gian mẫu chính là số lượng điểm trong một chuỗi con liên tiếp của chuỗi thời gian độ dài 𝑛
Chuỗi con này được xác định tùy từng loại dữ liệu
Ví dụ, với bộ dữ liệu 10 điểm có giá trị tương ứng là 𝐴 = {1, 2, 4, 3, 2, 1, 2, 3, 4, 2} thì giá trị trung bình 𝑚𝑒𝑎𝑛(𝐴) = 2.4 Đại lượng phương sai là 1.04 Độ lệch chuẩn 𝑆𝐷 = √1.04 ≈ 1.02 Do đó 𝑅 ≈ 2.04
Việc xác định 𝑅 như thế có ý nghĩa rằng những điểm trong chuỗi thời gian lấy mẫu thường dao động xung quanh giá trị trung bình với biên độ xấp xỉ 𝑆𝐷 Do đó, các điểm có giá trị vượt quá 𝑅 sẽ luôn được xác định là điểm cực trị của chuỗi thời gian.
Công nghệ GPU
Ngày nay, song song hóa đang trở nên phổ biến và lập trình song song đang trở thành chủ đạo trong thế giới lập trình Có hai loại kỹ thuật song song cơ bản trong các
Chương 3: Cơ sở lý thuyết
29 ứng dụng là song song hóa tác vụ (Task parallelism) và song song hóa dữ liệu (Data parallelism)
Song song hóa tác vụ phát sinh khi có nhiều tác vụ hoặc chức năng có thể hoạt động độc lập Song song hóa tác vụ tập trung vào phân phối các chức năng trên nhiều lõi (core) Trong khi đó, song song hóa dữ liệu phát sinh khi có nhiều phần dữ liệu có thể hoạt động cùng một lúc Song song hóa dữ liệu tập trung vào phân phối dữ liệu trên nhiều lõi
Theo tài liệu của hãng NVIDIA [22], GPU (Graphics Processing Unit) là một phần cứng được thiết kế đặc biệt phù hợp để giải quyết các vấn đề có thể được biểu diễn dưới dạng các phép tính song song trên dữ liệu - cùng một chương trình được thực hiện trên nhiều phần tử dữ liệu song song - với cường độ tính toán số học cao - tỷ số giữa các phép tính số học trên các toán hạng GPU đã được phát triển thành một bộ xử lý đa lõi, đa luồng với công suất tính toán cực lớn và băng thông bộ nhớ rất cao, như minh họa trong Hình 3.14 và Hình 3.15 Nội dung của luận văn cũng sẽ tập trung và khả năng xử lý trên dữ liệu này mà GPU mang lại
Hình 3.14: Khả năng xử lý số dấu chấm động của GPU và CPU [22]
Chương 3: Cơ sở lý thuyết
30 Hình 3.15: Băng thông bộ nhớ của GPU và CPU [22]
Lý do đằng sau sự khác biệt về khả năng xử lý dấu chấm động giữa CPU và GPU là GPU chuyên biệt về tính toán mạnh mẽ và song song hóa cao cho đồ họa và dựng hình, nên nó được thiết kế sao cho có nhiều bóng bán dẫn (transistors) được dành cho xử lý dữ liệu hơn chứ không phải là bộ nhớ đệm dữ liệu và điều khiển lưu lượng, như được minh họa sơ đồ Hình 3.16
Hình 3.16: GPU có nhiều bóng bán dẫn xử lý dữ liệu hơn CPU [22]
Tóm lại, mặc dù kiến trúc của các CPU và GPU hiện nay đều là nhiều lõi (many core) hay đa lõi (multicore), một lõi của GPU là khá khác so với một lõi CPU Một lõi CPU, trọng lượng tương đối nặng, được thiết kế cho những điều khiển logic rất phức tạp, tìm cách tối ưu hóa việc thực hiện các chương trình tuần tự Một lõi GPU, trọng
Chương 3: Cơ sở lý thuyết
31 lượng tương đối nhẹ, được tối ưu hóa cho các tác vụ song song hóa dữ liệu với những điều khiển logic đơn giản, tập trung vào thông lượng bộ nhớ của các chương trình song song
3.7.2 Lập trình không đồng nhất
Trong những ngày đầu tiên, máy tính chỉ chứa các đơn vị xử lý trung tâm (CPU) được thiết kế để chạy các tác vụ lập trình chung Kể từ thập kỷ qua, các máy tính chủ đạo trong cộng đồng những nhà tính toán hiệu năng cao đã chuyển sang các yếu tố xử lý khác Phổ biến nhất là GPU, ban đầu được thiết kế để thực hiện các tính toán đồ họa chuyên dụng song song Theo thời gian, GPU đã trở nên mạnh mẽ hơn và tổng quát hơn, cho phép chúng được áp dụng cho các tác vụ tính toán song song mục đích chung với hiệu suất tuyệt vời và hiệu quả năng lượng cao
Thông thường, CPU và GPU là các thành phần xử lý rời rạc được kết nối bằng bus
PCI-Express trong một nút tính toán đơn Trong loại kiến trúc này, GPU được gọi là thiết bị rời rạc
Việc chuyển đổi từ các hệ thống đồng nhất sang các hệ thống không đồng nhất là một cột mốc quan trọng trong lịch sử điện toán hiệu suất cao Tính toán đồng nhất
(Homogeneous computing) sử dụng một hoặc nhiều bộ vi xử lý của cùng một kiến trúc để thực thi một ứng dụng Tính toán không đồng nhất (Heterogeneous computing) thay vì sử dụng một bộ kiến trúc bộ vi xử lý để thực thi một ứng dụng, còn áp dụng các tác vụ cho các kiến trúc khác mà chúng rất phù hợp, kết quả là cải thiện hiệu năng
Mặc dù các hệ thống không đồng nhất cung cấp những ưu điểm không thể so sánh được so với các hệ thống tính toán hiệu suất cao truyền thống, việc sử dụng hiệu quả các hệ thống như vậy hiện bị hạn chế bởi sự phức tạp trong việc thiết kế ứng dụng tăng lên Trong khi đó, lập trình song song đã nhận được sự chú ý gần đây, bất chấp cả việc các nguồn tài nguyên không đồng nhất làm tăng thêm sự phức tạp
3.7.2.1 Kiến trúc không đồng nhất
Một nút tính toán không đồng nhất điển hình ngày nay thường bao gồm hai socket CPU đa lõi và hai hoặc nhiều GPU GPU hiện không phải là một nền tảng độc lập mà là một bộ xử lý đồng hành với một CPU Do đó, GPU phải hoạt động cùng với một máy
Chương 3: Cơ sở lý thuyết
32 chủ dựa trên CPU thông qua một bus PCI-Express, như trong Hình 3.17 Đó là lý do tại sao, trong thuật ngữ tính toán GPU, CPU được gọi là máy chủ (host) và GPU được gọi là thiết bị (device)
Hình 3.17: Kiến trúc không đồng nhất giữa CPU và GPU [22]
Một ứng dụng không đồng nhất bao gồm hai phần: Mã máy chủ và mã thiết bị Mã máy chủ chạy trên CPU và mã thiết bị chạy trên GPU Một ứng dụng thực hiện trên một nền tảng không đồng nhất thường được khởi tạo bởi CPU Mã CPU chịu trách nhiệm quản lý môi trường, mã và dữ liệu cho thiết bị trước khi tải các tác vụ tính toán chuyên sâu trên thiết bị
Với các ứng dụng tính toán chuyên sâu, các phần chương trình thường thể hiện một lượng lớn dữ liệu song song GPU được sử dụng để đẩy nhanh việc thực thi phần dữ liệu song song này Khi một thành phần phần cứng tách biệt về mặt vật lý với CPU được sử dụng để tăng tốc các phần tính toán chuyên sâu của một ứng dụng, nó được gọi là bộ tăng tốc phần cứng (hardware accelerator) GPU được cho là ví dụ phổ biến nhất của bộ tăng tốc phần cứng
Có hai tính năng quan trọng mô tả khả năng của GPU:
- Số lõi CUDA (Trong kiến trúc GPU của hãng NVIDIA các lõi được gọi là lõi CUDA)
- Kích thước bộ nhớ (Memory size)
Theo đó, có hai chỉ số khác nhau để mô tả hiệu suất GPU:
- Hiệu suất tính toán đỉnh (Peak Performance)
- Băng thông bộ nhớ (Memory Bandwidth)
Chương 3: Cơ sở lý thuyết
33 Hiệu suất tính toán đỉnh là thước đo khả năng tính toán, thường được định nghĩa là có bao nhiêu phép tính dấu chấm động độ chính xác đơn hoặc độ chính xác kép có thể được xử lý mỗi giây Hiệu suất tính toán đỉnh thường được biểu diễn bằng các
Tối ưu hóa hiệu suất khi lập trình trên GPU
Theo cung cấp của hãng NVIDIA [22] , tối ưu hóa hiệu suất lập trình không đồng nhất xoay quanh ba chiến lược cơ bản:
- Tối ưu hóa việc thực thi song song để đạt được mức sử dụng tối đa
- Tối ưu hóa việc sử dụng bộ nhớ để đạt được thông lượng bộ nhớ tối đa
- Tối ưu hóa việc sử dụng các lệnh để đạt được thông lượng lệnh tối đa
Với từng chiến lược sẽ mang lại hiệu suất tốt nhất cho một phần cụ thể của ứng dụng phụ thuộc vào giới hạn hiệu suất cho phần đó Chẳng hạn, tối ưu hóa việc sử dụng lệnh của một hạt nhân mà phần lớn bị giới hạn bởi các truy cập bộ nhớ sẽ không mang lại hiệu năng đáng kể nào Do đó, các nỗ lực tối ưu hóa nên được chỉ dẫn liên tục bằng cách đo lường và giám sát các giới hạn hiệu suất, ví dụ có thể sử dụng bộ công cụ CUDA Profiler để đánh giá hiệu suất Ngoài ra, so sánh thông lượng xử lý dấu chấm động hoặc thông lượng bộ nhớ - tùy theo ngữ cảnh - của một hạt nhân cụ thể đến thông lượng lý thuyết đỉnh tương ứng của thiết bị cho biết có bao nhiêu chỗ để cải thiện hiệu suất xử lý của hạt nhân
3.8.1 Tối ưu hóa việc thực thi song song Để tối đa hóa việc thực thi song song, ứng dụng phải được cấu trúc theo cách mà nó cho thấy nhiều sự song song nhất có thể và hiệu quả ánh xạ song song này đến các thành phần khác nhau của hệ thống để giữ cho chúng bận rộn hầu hết thời gian Ở mức ứng dụng, các ứng dụng nên tối đa hóa việc thực thi song song giữa máy chủ, thiết bị và bus kết nối máy chủ với các thiết bị, bằng cách sử dụng các lời gọi hàm và các dòng (stream) không đồng bộ; nên gán cho mỗi bộ xử lý loại công việc mà nó làm tốt nhất: khối lượng công việc xử lý tuần tự với máy chủ; khối lượng công việc xử lý song song cho các thiết bị Đối với khối lượng công việc song song, tại các vị trí trong giải thuật nơi mà song song không thể thực hiện được vì một số luồng cần đồng bộ hóa để chia sẻ dữ liệu với nhau, sẽ có hai trường hợp:
Chương 3: Cơ sở lý thuyết
40 - Các luồng này thuộc cùng một khối luồng, trong trường hợp này chúng nên sử dụng syncthreads() và chia sẻ dữ liệu thông qua bộ nhớ chia sẻ trong cùng một lời gọi hạt nhân;
- Các luồng thuộc về các khối khác nhau, trong trường hợp này chúng phải chia sẻ dữ liệu thông qua bộ nhớ toàn cục bằng cách sử dụng hai lời gọi hạt nhân riêng biệt, một cho ghi và một để đọc từ bộ nhớ toàn cục
Trường hợp thứ hai kém hiệu quả hơn nhiều vì nó bổ sung thêm chi phí cho việc thêm hạt nhân và lưu lượng bộ nhớ toàn cục Do đó, sự xuất hiện của nó sẽ được giảm thiểu bằng cách ánh xạ thuật toán tới mô hình lập trình CUDA theo cách mà các tính toán yêu cầu thông tin liên lạc giữa các luồng được thực hiện chỉ trong một khối luồng đơn lẻ càng nhiều càng tốt Ở mức thấp hơn, mức thiết bị, các ứng dụng nên tối đa hóa việc thực thi song song giữa các bộ xử lý đa lõi của một thiết bị Nhiều hạt nhân có thể thực hiện đồng thời trên một thiết bị, do đó, việc sử dụng tối đa cũng có thể đạt được bằng cách sử dụng các stream để cho phép đủ các hạt nhân thực thi đồng thời Ở mức độ thấp hơn nữa, mức vi xử lý, các ứng dụng nên tối đa hóa việc thực hiện song song giữa các bộ xử lý lệnh khác nhau trong một bộ xử lý đa lõi Một bộ xử lý GPU dựa trên khả năng song song các luồng để tối đa hóa việc sử dụng các bộ xử lý lệnh của nó Do đó, việc sử dụng liên quan trực tiếp đến số lượng warp cư trú Tại mọi thời điểm cấp phát lệnh, một bộ lập lịch trình các warp chọn một warp sẵn sàng thực hiện lệnh tiếp theo của nó, nếu có, và đưa ra lệnh cho các luồng trong warp đó Số chu kỳ xung nhịp cần cho một warp sẵn sàng thực hiện lệnh tiếp theo của nó được gọi là độ trễ (latency) và việc sử dụng toàn bộ khả năng của nó khi tất cả các bộ lập lịch warp luôn có một số lệnh cho một số warp ở mọi chu kỳ xung nhịp trong khoảng thời gian trễ đó, hoặc nói cách khác, khi đó độ trễ hoàn toàn là "ẩn" Số lượng lệnh cần thiết để ẩn độ trễ phụ thuộc vào thông lượng tương ứng của các lệnh này Chi tiết hơn về tối đa hóa việc thực hiện song song giữa các đơn vị xử lý có thể xem thêm trong [22]
Chương 3: Cơ sở lý thuyết
3.8.2 Tối ưu hóa việc sử dụng bộ nhớ
3.8.2.1 Truyền dữ liệu giữa máy chủ và thiết bị
Bước đầu tiên trong việc tối đa hóa thông lượng bộ nhớ tổng thể cho ứng dụng là giảm thiểu việc truyền dữ liệu với băng thông thấp Điều đó có nghĩa là giảm thiểu vận chuyển dữ liệu giữa máy chủ và thiết bị vì chúng có băng thông thấp hơn nhiều so với truyền dữ liệu giữa bộ nhớ toàn cục và thiết bị
Các ứng dụng nên cố gắng giảm thiểu việc chuyển dữ liệu giữa máy chủ và thiết bị Một cách để thực hiện điều này là di chuyển nhiều mã hơn từ máy chủ đến thiết bị, ngay cả khi điều đó có nghĩa là mức độ song song của các hạt nhân thấp Cấu trúc dữ liệu trung gian có thể được tạo trong bộ nhớ thiết bị, do thiết bị vận hành và bị hủy mà không bao giờ được ánh xạ bởi máy chủ hoặc được sao chép vào bộ nhớ máy chủ Ngoài ra, do chi phí liên quan đến mỗi lần vận chuyển, việc thực hiện nhiều lần vận chuyển nhỏ thành một lần chuyển lớn luôn thực hiện tốt hơn so với thực hiện từng lần chuyển riêng biệt
Trên các hệ thống có front-side bus , để truyền dữ liệu giữa máy chủ và thiết bị đạt được hiệu năng cao hơn bằng cách sử dụng cơ chế Page-Locked host memory, chi tiết cơ chế này có thể tham khảo trong [22] Ngoài ra, khi sử dụng cơ chế này, không cần phân bổ bộ nhớ thiết bị và sao chép dữ liệu một cách rõ ràng giữa bộ nhớ thiết bị và bộ nhớ máy chủ Truyền dữ liệu được thực hiện ngầm định mỗi lần hạt nhân truy cập vào bộ nhớ được ánh xạ Để đạt hiệu suất tối đa, các truy cập bộ nhớ này phải được truy xuất một cách liên tiếp (coalesced) như với truy xuất vào bộ nhớ toàn cục
3.8.2.2 Truy cập bộ nhớ thiết bị
Bước tiếp theo trong việc tối đa hóa thông lượng bộ nhớ là cách tổ chức truy cập bộ nhớ tối ưu nhất dựa trên các mẫu truy cập bộ nhớ thiết bị Việc tối ưu hóa này đặc biệt quan trọng đối với việc truy cập bộ nhớ toàn cục vì băng thông bộ nhớ toàn cục thấp, các truy cập bộ nhớ toàn cục không tối ưu có tác động rất lớn đến hiệu năng Một lệnh truy cập địa chỉ bộ nhớ (toàn cục (global), chia sẻ (shared), hằng (constant), kết cấu (texture)) có thể cần phải được cấp phát lại nhiều lần phụ thuộc vào việc phân bổ địa chỉ bộ nhớ qua luồng trong warp Cách phân bố như vậy sẽ ảnh hưởng đến từng loại bộ nhớ thông qua các lệnh được miêu tả trong phần dưới đây
Chương 3: Cơ sở lý thuyết
• Bộ nhớ toàn cục (Global Memory)
Bộ nhớ toàn cục thường trú trong bộ nhớ thiết bị và bộ nhớ thiết bị thì được truy cập thông qua 32, 64, 128 byte giao dịch bộ nhớ Các giao dịch bộ nhớ được liên kết một cách tự nhiên: Chỉ 32, 64, 128 byte phân đoạn (segments) của bộ nhớ thiết bị được liên kết đến kích thước của chúng có thể đọc hoặc ghi bởi giao dịch bộ nhớ
Khi một warp thực thi một lệnh truy cập bộ nhớ toàn cầu, nó thống nhất truy cập bộ nhớ của các luồng trong warp vào một hoặc nhiều giao dịch bộ nhớ phụ thuộc kích thước của từ (word) truy cập bởi mỗi luồng và sự phân bố của các địa chỉ bộ nhớ trên các luồng Nhìn chung nhiều giao dịch là cần thiết, các từ không được sử dụng được chuyển sang bên ngoài các từ được truy cập bởi luồng, khi đó giảm thông lượng lệnh cho phù hợp Ví dụ: nếu một giao dịch 32 byte bộ nhớ được tạo ra cho mỗi luồng 4 byte truy cập, thì thông lượng được chia là 8 byte Để tối ưu hóa thông lượng bộ nhớ toàn cục, cần thiết phải tối đa hóa khả năng truy cập liên tiếp (coalescing), như:
- Sử dụng các mẫu truy xuất tối ưu nhất được thiết kế cho từng khả năng tính toán của từng GPU
- Sử dụng các kiểu dữ liệu đáp ứng đáp ứng yêu cầu kích thước và khả năng căn chỉnh Các lệnh của bộ nhớ toàn cục hỗ trợ đọc ghi các từ có kích thước là 1, 2, 4, 8 hoặc 16 byte Bất kỳ truy cập (thông qua biến hoặc con trỏ) dữ liệu thường trú trong bộ nhớ toàn cục sẽ biên dịch một lệnh bộ nhớ toàn cục duy nhất khi và chỉ khi kích thước của kiểu dữ liệu là 1,2 ,4, 8 hoặc 16 byte
Nếu kích thước các từ không thỏa mãn thì sẽ được biên dịch thành nhiều lệnh với các mẫu truy cập xen kẽ
- Đệm thêm dữ liệu (padding data) trong một số trường hợp để tránh xung đột dữ liệu khi truy cập
• Bộ nhớ cục bộ (Local Memory)
Truy cập bộ nhớ cục bộ chỉ xảy ra đối với một số biến tự động Một biến tự động thường được khai báo trong mã thiết bị mà không có bất kỳ từ chỉ định nào như
device , shared và constant thường nằm trong các thanh ghi Tuy nhiên trong một số trường hợp, trình biên dịch có thể chọn đặt nó vào bộ nhớ cục bộ Các biến tự động mà trình biên dịch có thể đặt trong bộ nhớ cục bộ là:
Chương 3: Cơ sở lý thuyết
43 - Mảng mà không xác định được chỉ mục của chúng được lập với số lượng không đổi
- Cấu trúc lớn hoặc mảng chiếm quá nhiều không gian thanh ghi
- Bất kỳ biến nào nếu hạt nhân sử dụng nhiều hơn các thanh ghi có sẵn (được gọi là tràn thanh ghi)
Bộ nhớ cục bộ nằm trong bộ nhớ thiết bị, do đó các truy cập bộ nhớ cục bộ có cùng độ trễ cao và băng thông thấp như truy cập bộ nhớ toàn cục và phải tuân thủ các yêu cầu truy xuất liên hợp tương tự cho bộ nhớ cục bộ Tuy nhiên, bộ nhớ cục bộ được tổ chức sao cho các từ 32 bit liên tiếp được truy cập bởi các luồng liên tiếp Do đó, các truy xuất hoàn toàn là liên hợp miễn sao tất cả các luồng trong một warp có cùng một địa chỉ truy xuất tương đối (ví dụ, có cùng một chỉ mục trong một biến mảng, cùng là một thành viên trong một biến cấu trúc)
• Bộ nhớ chia sẻ (Shared Memory)
Khái quát bài toán Kết chuỗi con
Bài toán kết chuỗi con trên dữ liệu chuỗi thời gian được xây dựng để thỏa mãn yêu cầu với hai chuỗi thời gian 𝑇 1 và 𝑇 2 có độ dài bất kỳ Bài toán cần xác định tập hợp 𝑆 1 chứa tất cả các chuỗi con của 𝑇 1 tương tự với một vài chuỗi con của 𝑇 2 và tập hợp 𝑆 2 chứa tất cả các chuỗi con của 𝑇 2 tương tự với một vài chuỗi con của 𝑇 1 Kết quả bài toán là hai tập hợp 𝑆 1 và 𝑆 2 chứa các chuỗi con tương tự nhau của hai chuỗi
Thông thường, đối với bài toán kết chuỗi con có hai vấn đề chính cần giải quyết
Thứ nhất là việc phân đoạn chuỗi thời gian để quyết định có bao nhiêu chuỗi con cần thực hiện tác vụ kết Thứ hai là tìm kiếm tương tự bằng cách so trùng chuỗi con trên dữ liệu chuỗi thời gian để thực hiện thao tác kết
Tuy nhiên, do tập dữ liệu ban đầu có thể có nguồn gốc khác nhau nên miền giá trị của dữ liệu cũng sẽ khác nhau Dữ liệu này sẽ có những giá trị không phù hợp với miền trị dữ liệu gọi là giá trị nhiễu Trong nhiều trường hợp, dữ liệu nhiễu có thể làm sai lệch kết quả cuối cùng Thậm chí tỷ lệ lỗi và sai sót có thể tăng lên gấp đôi nếu ứng dụng không chuẩn hóa dữ liệu [16] Vì vậy, dữ liệu cần phải được tiền xử lý là chuẩn hóa dữ liệu (data normalization) để hạn chế nhiễu và đưa dữ liệu từ miền trị không xác định về miền đã xác định Đề tài sẽ sử dụng chuẩn hóa Z và Min – Max để loại bỏ nhiễu cũng như ánh xạ miền trị của chuỗi thời gian này về miền trị của chuỗi thời gian kia Hình 4.1 cho thấy quá trình chuẩn hóa dữ liệu cho bài toán
Chương 4: Phương pháp đề xuất
47 Về việc phân đoạn chuỗi thời gian (timeseries segmentation), đề tài sử dụng phương pháp phân đoạn dựa vào các điểm cực trị quan trọng [17] và cách xác định tham số 𝑅 [13] [14] - khoảng giá trị giới hạn các điểm cực trị - để quyết định một điểm nào đó có là cực trị quan trọng hay không
Hình 4.1: Quá trình chuẩn hóa dữ liệu
Về việc giải quyết bài toán tìm kiếm tương tự trên dữ liệu chuỗi thời gian, đề tài sử dụng phương pháp tìm kiếm vùng bằng cách so trùng chuỗi con Chuỗi truy vấn Q dùng để thực thao tác so trùng là chuỗi con nằm giữa hai cực đại (hoặc cực tiểu) liên tiếp Độ dài chuỗi con chính là độ dài của phân đoạn được tính bằng số lượng điểm giữa hai cực đại (hoặc cực tiểu) liên tiếp trong chuỗi thời gian Hàm tính khoảng cách được sử dụng là độ đo xoắn thời gian động DTW Ngưỡng 𝜀 (threshold) mà trong giới hạn đó hai chuỗi thời gian gọi là tương tự nhau được điều chỉnh bởi người sử dụng hoặc chuyên gia quan sát (human inspection) sao cho kết quả là phù hợp nhất tùy từng loại dữ liệu cụ thể
Do việc tính khoảng cách DTW theo giải thuật tuần tự có độ phức tạp lớn O(mn), m, n là độ dài của hai chuỗi thời gian, nên luận văn đã đưa ra giải pháp thực thi song song dựa vào GPU như cách tiếp cận của Sart và các cộng sự [6] nhằm tăng tốc quá trình tính toán khoảng cách này GPU là một thiết bị tính toán phục vụ như một bộ xử
Chương 4: Phương pháp đề xuất
48 lý cho CPU Nó có bộ nhớ thiết bị riêng và có thể thực thi nhiều luồng song song [22]
Khi đó nhiều luồng chạy trên nhiều lõi xử lý thực hiện cùng một chương trình trên những dữ liệu riêng biệt Với kiến trúc Single Instruction Multiple Data (SIMD), cho phép chúng ta thực hiện tính toán khoảng cách DTW song song trên các phân đoạn khác nhau của chuỗi thời gian Đồng thời, luận văn cũng áp dụng ràng buộc dải Sakoe-Chiba vào trong giải thuật xử lý song song nhằm cải tiến hơn nữa tốc độ thực thi
Trong toàn bộ các giai đoạn của bài toán kết chuỗi con trên chuỗi thời gian, quá trình tìm kiếm tương tự bằng cách so trùng chuỗi con là bước có khả năng song song hóa cao nhất bởi dữ liệu có thể chia ra theo từng cửa sổ trượt để xử lý độc lập trên từng luồng của GPU Khi đó mỗi luồng sẽ thực thi tính toán DTW cho một cửa sổ trượt tương ứng Hơn nữa, số lượng các cửa sổ trượt là lớn khi chiều dài của chuỗi thời gian lớn nên việc xử lý song song cho quá trình này là phù hợp khi xem xét đến các khía cạnh để song song hóa Quá trình kết chuỗi con dựa vào GPU được thực hiện như Hình 4.2
Hình 4.2: Quá trình kết chuỗi con
Nhận thấy, có một vài hạn chế trong quá trình tính toán DTW như đã trình bày ở
Hình 4.2, GPU phải tính toán tương đối lớn các DTW không cần thiết làm ảnh hưởng đến hiệu suất tổng thể Do đó, luận văn sử dụng thêm kỹ thuật ràng buộc chặn dưới để loại bỏ bớt những khoảng cách DTW này trước khi đem các phần còn lại cho vào GPU để thực hiện song song hóa Quá trình kết chuỗi con trên dữ liệu chuỗi thời gian dựa vào GPU cùng với kỹ thuật ràng buộc chặn dưới được thực hiện như Hình 4.3 Phần tiếp theo sẽ trình bày chi tiết hơn hai quá trình này
Chương 4: Phương pháp đề xuất
49 Hình 4.3: Quá trình kết chuỗi con có cắt tỉa.
Chuẩn hóa dữ liệu
Như đã đề cập trước đó, dữ liệu ban đầu thường rất khác nhau và thường có chứa nhiễu Do đó, chuẩn hóa dữ liệu trước khi xử lý một công việc nào đó là cần thiết Giai đoạn tiền xử lý này có một số lợi ích như hạn chế và loại bỏ dữ liệu nhiễu và chuẩn hóa dữ liệu ban đầu từ miền trị chưa xác định về miền trị xác định trước
Chuẩn hóa 𝑍 biến đối chuỗi thời gian 𝑄 = (𝑥 1 , 𝑥 2 , … , 𝑥 𝑛 ) thành chuỗi thời gian 𝑄 ′ = (𝑥′ 1 , 𝑥′ 2 , … , 𝑥′ 𝑛 ) có cùng chiều dài 𝑛 Trong đó, mỗi giá trị 𝑥 𝑖 ′ của chuỗi thời gian kết quả được xác định bởi công thức:
Với 𝑚𝑒𝑎𝑛(𝑄) và 𝑠𝑡𝑎𝑛𝑑𝑎𝑟𝑑_𝑑𝑒𝑣𝑖𝑎𝑡𝑖𝑜𝑛 là giá trị trung bình và độ lệch chuẩn của chuỗi thời gian ban đầu 𝑄 được xác định bởi công thức:
Chương 4: Phương pháp đề xuất
50 Như vậy, phép chuẩn hóa 𝑍 dịch chuyển chuỗi thời gian ban đầu Q với đường căn bản (base line) bất kỳ thành Q’ có các giá trị dao động xung quanh đường căn bản x =
0 mà vẫn đảm bảo chính xác hình dạng và đặc trưng của dữ liệu Ngoài ra, biên độ của những dữ liệu nhiễu sẽ bị giảm Do đó dữ liệu nhiễu sẽ ít hoặc không gây ảnh hưởng quá nhiều đến kết quả sau cùng
Chuẩn hóa Min-Max thực hiện phép biến đổi tuyến tính trên dữ liệu ban đầu Gọi
𝑚𝑖𝑛 𝐴 và 𝑚𝑎𝑥 𝐴 lần lượt là giá trị nhỏ nhất và lớn nhất của thuộc tính A Chuẩn hóa Min- Max ánh xạ một giá trị 𝑣 𝑖 của A sang 𝑣 𝑖 ′ thuộc miền trị mới [𝑛𝑒𝑤_𝑚𝑖𝑛 𝐴 , 𝑛𝑒𝑤_max 𝐴 ]
Giá trị 𝑣 𝑖 ′ được tính bởi công thức:
Như vậy, chuẩn hóa Min-Max duy trì được mối quan hệ giữa các giá trị trong dữ liệu ban đầu Nghĩa là, nếu hai giá trị 𝑣 𝑖 < 𝑣 𝑗 trong miền trị ban đầu thì sau khi chuẩn hóa Min-Max, ta vẫn có 𝑣 𝑖 ′ < 𝑣 𝑗 ′ Ngoài ra, chuẩn hóa này còn phát hiện được những lỗi
“vượt quá giới hạn” (out-of-bound) nếu các giá trị nhập trong tương lai vượt ra ngoài khoảng giá trị ban đầu của A
Tóm lại, chuẩn hóa 𝑍 dịch chuyển hai chuỗi thời gian 𝑇 1 và 𝑇 2 có đường căn bản bất kỳ về đường căn bản 𝑥 = 0 mà vẫn giữ được hình dáng và đặc trưng ban đầu của dữ liệu Ngoài ra, chuẩn hóa Z còn làm hạn chế sự ảnh hưởng của dữ liệu nhiễu Tuy nhiên, chuẩn hóa Z không đảm bảo được miền trị của hai chuỗi thời gian 𝑇 1 và 𝑇 2 là tương đương nhau về mặt biên độ Việc này ảnh hướng lớn đến kết quả của bài toán so trùng chuỗi con Trong khi, chuẩn hóa Min-Max được sử dụng để ánh xạ miền trị của chuỗi thời gian này về miền trị của chuỗi thời gian kia dựa vào giá trị biên độ lớn nhất và nhỏ nhất trong từng chuỗi Do đó, luận văn sử dụng kết hợp cả hai kỹ thuật này như trình bày ở Hình 4.1.
Phân đoạn chuỗi thời gian
Luận văn sử dụng giải thuật phân đoạn dựa vào các điểm cực trị quan trọng đã giới thiệu trong phần 3.6 Qua đó, một đoạn được định nghĩa bằng số lượng điểm giữa hai
Chương 4: Phương pháp đề xuất
51 cực tiểu (hoặc cực đại) liên tiếp trong chuỗi thời gian Hình 4.4 minh họa ý tưởng này
Các điểm đánh dấu (tô tròn, vuông, nữa tròn) là các cực trị quan trọng
Hình 4.4: Các điểm cực trị quan trọng
Kết quả của quá trình phân đoạn chuỗi thời gian 𝑇 1 là một tập hợp 𝑆 chứa tất cả các đoạn Mỗi đoạn là một chuỗi con của chuỗi thời gian 𝑇 1 ban đầu Với Hình 4.4 thì tập hợp chứa các phân đoạn sau:
Từng đoạn trong tập 𝑆 sẽ được sử dụng như là mẫu truy vấn 𝑄 trong giai đoạn tìm kiếm tương tự trên chuỗi thời gian 𝑇 2
Vấn đề làm thế nào để xác định được một điểm cực trị quan trọng đã giới thiệu trong chương cơ sở lý thuyết Hàm khoảng cách được sử dụng là 𝑑(𝑎 𝑖 , 𝑎 𝑗 ) = |𝑎 𝑖 − 𝑎 𝑗 |, 𝑅 là tham số đã được giới thiệu ở phần 3.6.3 Giải thuật chỉ tốn một lượt duyệt qua toàn bộ chuỗi thời gian chiều dài 𝑛 là có thể xác định được các cực trị quan trọng Do đó, độ phức tạp là 𝑂(𝑛).
Quá trình kết chuỗi con
Luận văn hiện thực quá trình kết chuỗi con dựa trên giải thuật cửa sổ trượt từng điểm như minh họa Hình 4.5
Hình 4.5: Cửa sổ trượt trong quá trình kết chuỗi con
Chương 4: Phương pháp đề xuất
52 Kết chuỗi con dựa trên ý tưởng vét cạn thực hiện hai thao tác lớn là ứng với từng đoạn 𝑆 1𝑖 là chuỗi con của 𝑇 1 , tìm tất cả chuỗi con tương tự với 𝑆 1𝑖 trong 𝑇 2 và ngược lại ứng với từng đoạn 𝑆 2𝑖 là chuỗi con của 𝑇 2 tìm tất cả chuỗi con tương tự với 𝑆 2𝑖 trong 𝑇 1 Kích thước của cửa sổ trượt ứng với chiều dài của chuỗi con truy vấn tương ứng Kết quả bài toán là hai tập hợp 𝑅 1 và 𝑅 2 chứa các chuỗi con tương tự nhau của hai chuỗi
Hình 4.6 là mã giả mô tả ý tưởng của giải thuật cửa sổ trượt từng điểm cho bài toán kết chuỗi con Trong thuật toán có sử dụng thao tác căn bản là bài toán tìm kiếm tương tự so trùng chuỗi con (SubsequenceSearch) Phần sau của luận văn sẽ trình bày cụ thể hơn về thao tác này
Hình 4.6: Mã giả giải thuật kết chuỗi con trên hai chuỗi thời gian
Algorithm: Kết chuỗi con trên hai chuỗi thời gian T 1 và T 2 (SubsequenceJoin) Input: Hai tập chuỗi con S 1 , S 2 tương ứng của T 1 , T 2 và T 1 , T 2
Output: Hai tập R 1 , R 2 chứa các phân đoạn tương tự ứng với từng chuỗi con của T 1 và T 2 1 Foreach chuỗi con truy vấn s in S 1 do 2 Khởi tạo danh sách subsFound để lưu trữ các phân đoạn tương tự;
3 subsFound = SubsequenceSearch(s, T 2 , r, d); //r, d là ràng buộc dải và ngưỡng tương tự 4 If (subsFound.Count > 0)
8 Foreach chuỗi con truy vấn s in S 2 do 9 Khởi tạo danh sách subsFound để lưu trữ các phân đoạn tương tự;
Chương 4: Phương pháp đề xuất
Cắt tỉa các phép tính DTW không cần thiết
Để loại bỏ các khoảng cách DTW không cần thiết, luận văn sử dụng kỹ thuật ràng buộc chặn dưới như đề cập trong phần 3.4 Phương pháp cắt tỉa này đã được chứng minh và sử dụng trong rất nhiều các công trình nghiên cứu hiện nay như ([7], [11], [20], [21])
Trong quá trình tìm kiếm tương tự, nếu chặn dưới của một chuỗi con vượt quá ngưỡng đã cho, giá trị chính xác của khoảng cách DTW của chuỗi con với chuỗi truy vấn đó sẽ lớn hơn ngưỡng đã cho Do đó, không cần thiết phải tính toán khoảng cách DTW tại những chuỗi con này
Sau quá trình xác định các điểm cực trị để tìm các phân đoạn, từng đoạn chuỗi con của chuỗi thời gian 𝑇 1 sẽ được kiểm tra với toàn bộ chuỗi 𝑇 2 với các ràng buộc chặn dưới để tạo ra một danh sách các vị trí bắt đầu của chuỗi thời gian 𝑇 2 nơi mà các khoảng cách DTW không vượt quá chặn dưới Hình 4.7 minh họa một danh sách các vị trí mà cần phải xác định khoảng cách DTW Danh sách này được gọi là Head List
Hình 4.7: Danh sách các vị trí của Head List
Các ràng buộc chặn dưới được hiện thực trong luận văn này như LB_Kim đơn giản, LB_Keogh và LB_Keogh đảo ngược Cơ chế loại bỏ cũng được thực hiện tương tự như giải pháp trong bộ công cụ UCR DTW của công trình [16] là xếp chồng các ràng buộc này theo thứ tự đã trình bày ở trên Tại một thời điểm trong chuỗi thời gian, nếu giá trị chặn dưới của một ràng buộc của chuỗi con bắt đầu tại vị trí đó không vượt quá ngưỡng tương tự, thì chặn dưới của ràng buộc tiếp theo sẽ được tính toán và kiểm tra với ngưỡng Đến khi thỏa mãn hết các ràng buộc, thời điểm đó sẽ được lưu vào danh sách Head List làm đầu vào cho quá trình tính toán song song khoảng cách DTW trên các hạt nhân của GPU
Mã giả của thuật toán được trình bày như Hình 4.8 Trong đó, các hàm FindLowerUpperBound, CalculateKimLB, CalculateKeoghLB, CalculateRevKeoghLB
Chương 4: Phương pháp đề xuất
54 được hiện thực theo như các định nghĩa đã giới thiệu ở phần 3.4 Dễ dàng nhận thấy, với chuỗi con truy vấn q có độ dài m và độ dài của chuỗi thời gian T là n, thì số phần tử của headList luôn nhỏ hơn hoặc bằng n – m + 1
Hình 4.8: Mã giả giải thuật cắt tỉa.
So trùng chuỗi con dựa vào GPU
Thao tác so trùng chuỗi con được thực hiện song song dựa vào GPU Trong đó, mỗi luồng của GPU sẽ đảm nhận việc xác định một phân đoạn của chuỗi thời gian có
Algorithm: Cắt tỉa các vị trí dựa vào chặn dưới (PrunedByLowerBound) Input: Chuỗi con truy vấn q, chuỗi thời gian T, ràng buộc dải r, ngưỡng tương tự d
Output: Danh sách các thời điểm headList thỏa điều kiện ràng buộc chặn dưới
1 Khởi tạo danh sách headList;
2 Tạo các đường bao cho chuỗi truy vấn q: đường bao dưới l và đường bao trên u FindLowerUpperBound(q, m , r, l, u); //m là chiều dài của chuỗi q
3 Tạo các đường bao cho chuỗi thời gian T: đường bao dưới lBuff và đường bao trên uBuff
4 For i from 0 to n – m +1 do // n là chiều dài của chuỗi thời gian T
5 Tính chặn dưới theo Lower Bound Kim đơn giản lbKim = CalculateKimLB (t, q, i, m, d);
7 Tính chặn dưới theo Lower Bound Keogh lbKeogh = CalculateKeoghLB (t, u, l, i, m, d);
9 Tính chặn dưới theo Lower Bound Keogh đảo ngược lbKeogh2 = CalculateRevKeoghLB (t, q, lBuff, uBuff, i, m, d);
12 End If 13 End If 14 End If 15 End For End Algorithm
Chương 4: Phương pháp đề xuất
55 tương tự với chuỗi con truy vấn hay không, hay nói cách khác, mỗi luồng của GPU sẽ tính toán một ma trận xoắn của cửa số trượt tương ứng như Hình 4.9 Theo đó, với chuỗi con truy vấn Q có độ dài m và độ dài của chuỗi thời gian C là n thì số luồng cần song song cho một chuỗi con truy vấn tương ứng là n – m + 1
Hình 4.9: Quá trình thực thi song song so trùng chuỗi con
Không giống như thực hiện tuần tự trên CPU, các thiết bị GPU hoạt động trên bộ nhớ dữ liệu riêng (bộ nhớ thiết bị) Do đó, trước khi có thể tính toán song song các khoảng cách DTW của các chuỗi con, dữ liệu cần phải được cấp phát và sao chép từ bộ nhớ của CPU sang bộ nhớ GPU, cũng như xóa bỏ nó khi không còn sử dụng Sau đó, lần lượt từng chuỗi con truy vấn Q được phân đoạn từ chuỗi thời gian còn lại sẽ được cấp phát và sao chép vào bộ nhớ GPU ở mỗi lần thực hiện so trùng chuỗi con Bộ nhớ chia sẻ cũng cần phải cấu hình và cấp phát sao cho phù hợp với chiều dài khác nhau của từng chuỗi con truy vấn trong lúc thực thi Kết quả sau khi tính toán trên GPU là một tập các khoảng cách DTW và được vận chuyển ngược trở lại vào CPU Các giá trị sau đó được kiểm tra với ngưỡng để xác định các phân đoạn là trùng với chuỗi con truy vấn tương ứng
Hình 4.10 và Hình 4.11 là các mã giả thể hiện các giải thuật thực thi song song so trùng chuỗi con trong trường hợp không sử dụng phương pháp cắt tỉa bởi ràng buộc chặn dưới và có sử dụng phương pháp này Thao tác so trùng kết hợp cắt tỉa có thêm một đầu vào là danh sách headList Điểm khác nhau cơ bản của hai thuật toán là ở số luồng song song cần thực thi Số luồng cần thực thi với thao tác so trùng không cắt tỉa là n – m + 1 còn số luồng của thao tác so trùng cùng với cắt tỉa là số các phần tử của headList
Chương 4: Phương pháp đề xuất
56 Hình 4.10: Mã giả giải thuật so trùng chuỗi con trên GPU không có cắt tỉa
Algorithm: So trùng chuỗi con nhờ vào GPU không có cắt tỉa (SubsequenceSearch) Input: Chuỗi con truy vấn q, chuỗi thời gian T, ràng buộc dải r, ngưỡng tương tự d
Output: Một tập R các phân đoạn tương tự với chuỗi truy vấn q
1 Lấy đối tượng thiết bị GPU gpu = GPU.GetDevice();
2 Cấu hình số luồng cần thực thi song song hóa threadSize = T.Length – q.Length + 1; blockDim = BLOCK_SIZE; //BLOCK_SIZE là giá trị hằng định nghĩa bởi người dùng gridDim = (threadSize + blockDim - 1) / blockDim; shareMem = q.Length * sizeof(double);//kích thước bộ nhớ chia sẻ cần cho từng chuỗi con tương ứng
3 Cấp phát và sao chép dữ liệu từ host sang GPU dSeries = gpu.Allocate (T); dQuery = gpu.Allocate(d); //Sao chép dữ liệu vào
GPU dDistances = gpu.Allocate(threadSize); dFlatMatrix = gpu.Allocate(threadSize * (q.Length + 1) * 2);
4 Kích hoạt hạt nhân thực thi song song gpu.Calculate(dSeries, dQuery, r, dDistances, dFlatMatrix);
5 Sao chép kết quả trở lại CPU distances = gpu.CopyToHost(dDistances);
6 Xóa các vùng nhớ đã cấp phát trên GPU gpu.Free(dSeries); gpu.Free(dQuery); gpu.Free(dDistances); gpu.Free(dFlatMatrix);
7 Tìm các phân đoạn tương tự
For i from 0 to distances.Length do If(distances[i] < d)
End If End For End Algorithm
Chương 4: Phương pháp đề xuất
57 Hình 4.11: Mã giả giải thuật so trùng chuỗi con trên GPU có cắt tỉa
Algorithm: So trùng chuỗi con nhờ vào GPU có cắt tỉa (SubsequenceSearch) Input: Chuỗi con truy vấn q, chuỗi thời gian T, ràng buộc dải r, ngưỡng tương tự d, headList
Output: Một tập R các phân đoạn tương tự với chuỗi truy vấn q
1 Lấy đối tượng gpu của thiết bị GPU
2 Cấu hình số luồng cần thực thi song song hóa threadSize = headList.Count; blockDim = BLOCK_SIZE; //BLOCK_SIZE là giá trị hằng định nghĩa bởi người dùng gridDim = (threadSize + blockDim - 1) / blockDim; shareMem = q.Length * sizeof(double); //kích thước bộ nhớ chia sẻ cần cho từng chuỗi con tương ứng
3 Cấp phát và sao chép dữ liệu từ host sang GPU dSeries = gpu.Allocate (T); dQuery = gpu.Allocate(d); //Sao chép dữ liệu vào
GPU dHeadList = gpu.Allocate (headList); //Sao chép dữ liệu vào GPU dDist = gpu.Allocate(threadSize); dFlatMatrix = gpu.Allocate(threadSize * (q.Length + 1) * 2);
4 Kích hoạt hạt nhân thực thi song song gpu.Calculate(dSeries, dQuery, dHeadList, r, dDist, dFlatMatrix);
5 Sao chép kết quả trở lại CPU distances = gpu.CopyToHost(dDist);
6 Xóa các vùng nhớ đã cấp phát trên GPU gpu.Free(dSeries); gpu.Free(dQuery); gpu.Free(dHeadList); gpu.Free(dDistances); gpu.Free(dFlatMatrix);
7 Tìm các phân đoạn tương tự
For i from 0 to distances.Length do If (distances[i] < d)
R.Add(subsequence(headList[i], headList[i]+q.Length-1));
End If End For End Algorithm
Chương 4: Phương pháp đề xuất
Hạt nhân song song hóa việc tính độ đo DTW
GPU sẽ kích hoạt các hạt nhân để thực thi song song, mỗi hạt nhân sẽ đảm nhận tính toán một khoảng cách DTW Hình 4.12 mô tả giải thuật tính toán của hạt nhân không có áp dụng kỹ thuật cắt tỉa Quá trình tính toán theo như định nghĩa đã được giới thiệu trong phần 3.2 Tuy nhiên, thay vì tính toàn bộ ma trận xoắn (ws × ws), với ws là kích thước của cứa sổ trượt, giải thuật sử dụng một ma trận (2 × ws) để tiết kiệm không gian bộ nhớ trên GPU Trong đó, một hàng trong ma trận lưu các khoảng cách tích lũy tại thời điểm trước đó của chuỗi thời gian, hàng còn lại sẽ lưu trữ các khoảng cách tích lũy được tính tại thời điểm hiện tại Do đó, bộ nhớ cấp phát cho mảng ma trận xoắn flatMatrix là hai lần số luồng thực thi song song với kích thước cửa sổ trượt như đã thể hiện trong các giải thuật so trùng chuỗi con dựa vào GPU Hình 4.10 và Hình 4.11 Bên cạnh đó, tham số r được thêm vào để xác định ràng buộc dải Sakoe-Chiba nhằm giảm thiểu các tính toán ở các đường xoắn không cần thiết
Ngay sau khi được kích hoạt, các hạt nhân sẽ sao chép chuỗi truy vấn q vào bộ nhớ chia sẻ Đây là bộ nhớ dùng chung cho các luồng trong cùng một khối luồng và có tốc độ truy cập nhanh hơn gấp nhiều lần so với bộ nhớ toàn cục Một lệnh syncthreads được dùng để đảm bảo dữ liệu đã sẵn sàng cho việc truy cập
Biến idx là một giá trị dùng để xác định chỉ số của luồng đang thực thi, cũng như đó là vị trí bắt đầu của một phân đoạn trong chuỗi thời gian T Tuy nhiên, vì số luồng thực thi song song ở mức vật lý của GPU là bội số của warpSize, kích thước của một warp của GPU Do đó, để tránh trường hợp tràn chỉ số mảng, chỉ những luồng có chỉ số nhỏ hơn hoặc bằng số khoảng cách DTW cần thiết mới được phép thực thi
Hai hàm SetValue(array, idx, width, row, col, v), GetValue(array, idx, width, row, col) được định nghĩa bằng array[(2 * idx + row) * width + col] để truy cập chính xác vào vị trí một ô nhớ của ma trận xoắn flatMatrix ở luồng idx với chỉ số hàng và cột lần lượt là k và m, giá trị được gán là v
Các hạt nhân tính toán DTW khi có áp dụng kỹ thuật cắt tỉa cũng tương tự như trường hợp không có cắt tỉa Khi đó, hạt nhân có thêm một tham số đầu vào là danh sách headList Biến idx được kiểm tra với số phần tử của headList để tránh tràn chỉ số mảng, idx < headList.Count, (dòng lệnh 8 trong mã giả Hình 4.12) và thời điểm tính khoảng
Chương 4: Phương pháp đề xuất
59 cách trong T là headList[idx], T[headList[idx]+ j - 1], thay vì chỉ idx (dòng lệnh 24 trong mã giả Hình 4.12)
Hình 4.12: Mã giả giải thuật hạt nhân tính DTW
Algorithm: Tính toán DTW không có cắt tỉa (Calculate) Input: Chuỗi con truy vấn q, chuỗi thời gian T, ràng buộc dải r, mảng khoảng cách distances, mảng ma trận xoắn flatMatrix
Output: Một mảng distances các khoảng cách DTW
1 idx = blockIdx.x * blockDim.x + threadIdx.x; //idx là chỉ số của luồng hiện tại
2 ws = q.Length + 1; //ws là kích thước cửa sổ trượt
4 For i from 0 to q.Length do // Sao chép chuỗi truy vấn q vào bộ nhớ chia sẻ sq;
7 SyncThreads(); //Đợi cho quá trình sao chép hoàn tất 8 If (idx < T.Length - q.Length + 1) // Tránh tràn chỉ số mảng của distances
9 int k = 0, l = 1, g; // chỉ số hàng trong ma trận xoắn
11 For m from 1 to ws do
15 For j from 1 to ws do
16 For m from 0 to ws do
19 lower = Max(j - r, 1); upper =Min(j + r + 1, ws); //Dải Sakoe-Chiba
20 For i from lower to upper do
21 prevDist1 = GetValue(flatMatrix, idx, ws, l, i - 1);
22 prevDist2 = GetValue(flatMatrix, idx, ws, l, i);
23 prevDist3 = GetValue(flatMatrix, idx, ws, k, i - 1);
25 prevDist =Min(Min(prevDist1, prevDist2), prevDist3);
26 SetValue(flatMatrix, idx, ws, k, i, dist + prevDist);
30 distance[idx]=Sqrt(GetValue(flatMatrix, idx, ws, l, ws - 1));
Trong chương này, luận văn tiến hành một số loại thực nghiệm như: thực nghiệm về kết quả bài toán kết chuỗi con, thực nghiệm so sánh tốc độ thực thi của phương pháp đề xuất với giải pháp tuần tự truyền thống và giải pháp tăng tốc bằng phần mềm của bộ công cụ UCR DTW Một số kết luận cơ bản được nêu lên dựa trên các kết quả thực nghiệm.
Phương pháp thực nghiệm
Các thực nghiệm trong đề tài sẽ được xây dựng trên ngôn ngữ lập trình C# và CUDA với bộ cung cụ lập trình Microsoft Visual Studio 2017 Chương trình được thực thi trên từng hệ thống sau:
• Máy tính Intel® Core™ i7-4700HQ, tốc độ xử lý 2.40 GHz, bộ nhớ chính (RAM) 8 GB, hệ điều hành Windows 10 và card đồ họa GTX 850M 4GB của hãng NVIDIA
• Máy server Intel® Xeon® Silver 4114, 40 lõi (core), tốc độ xử lý 2.2GHz, bộ nhớ chính (RAM) 200 GB, hệ điều hành Ubuntu 16.04 LTS và card đồ họa NVIDIA TESLA P100 PCIE 16GB
Các tập dữ liệu thực nghiệm trong luận văn này được trích xuất từ bộ dữ liệu “The UCR Time Series Data Mining archive” [23] Tập dữ liệu này gồm nhiều lĩnh vực khác nhau như: y tế (dữ liệu điệm tâm đồ), tài chính (dữ liệu chứng khoán), công nghệ (dữ liệu lượng tiêu thụ bộ nhớ), năng lượng (dữ liệu về nhu cầu tiêu thụ điện năng và nhu cầu năng lượng),
Vì bài toán kết chuỗi con cần thực hiện trên hai bộ dữ liệu cùng loại Do đó, ứng với từng bộ dữ liệu mẫu, chương trình tạo thêm một bộ dữ liệu tương tự để tiến hành thực nghiệm Dữ liệu tương tự được sinh ra theo qui tắc ngẫu nhiên như sau:
Trong đó, dấu cộng hoặc dấu trừ là do quá trình ngẫu nhiên quyết định Việc sinh dữ liệu mẫu được tiến hành sau khi chuẩn hóa dữ liệu nên các giá trị nhiễu sẽ ít hoặc không ảnh hưởng đến bộ dữ liệu mới được sinh ra Bảng 5-1 cung cấp thông tin của các tập dữ liệu thử nghiệm được dùng trong luận văn
Bảng 5-1: Tập dữ liệu thực nghiệm
Tập dữ liệu Chiều dài chuỗi thời gian
5.1.3 Các tham số ước lượng
Trong phần thực nghiệm này, luận văn sử dụng một số tham số ước lượng như ngưỡng tương tự 𝜀 (threshold) - giá trị mà trong đó hai chuỗi thời gian được gọi là tương tự, ràng buộc dải Sakoe-Chiba 𝑟 - giá trị giúp giới hạn các đường xoắn cần tính trong độ đo xoắn thời gian động và độ dài chuỗi lấy mẫu để xác định tham số R cho quá trình phân đoạn
Giá trị ngưỡng được tính theo công thức:
Trong đó, 𝐴 là giá trị biên độ lớn nhất giữa mọi cặp điểm trong hai chuỗi con
Ngưỡng này sẽ được giám sát bởi người dùng hoặc các chuyên gia quan sát (human inspection) Trong luận văn, ngưỡng được xác định thông qua giá trị 𝜀′ nhập vào sao cho kết quả tìm được là chính xác nhất tùy từng loại dữ liệu
Ràng buộc dải Sakoe-Chiba
Giá trị của ràng buộc Sakoe-Chiba 𝑟 được tính bởi công thức:
Trong đó, 𝑟 ′ (0 < 𝑟′ ≤ 1) là giá trị nhập bởi người dùng hoặc các chuyên gia quan sát sao cho phù hợp tùy từng dữ liệu
Tham số R Đối với quá trình phân đoạn, độ dài chuỗi lấy mẫu để xác định tham số R được liệt kê như Bảng 5-2
Bảng 5-2: Giá trị để xác định tham số R cho từng bộ dữ liệu
Tập dữ liệu Chiều dài chuỗi mẫu Chỉ số đầu Chỉ số cuối
Với tham số cung cấp kể trên, luận văn tiến hành một số loại thực nghiệm sau, các thực nghiệm được tiến hành trên tất cả các bộ dữ liệu với chiều dài khác nhau
• Thực nghiệm kiểm tra tính đúng đắn của phương pháp đề xuất qua các kết quả trực quan có được từ việc kết chuỗi con
• Thực nghiệm tốc độ thực thi giữa phương pháp tuần tự UCR DTW, ký hiệu là UCR_DTW, là phương pháp sử dụng kết hợp nhiều kỹ thuật phần mềm như ràng buộc chặn dưới, ràng buộc dải Sakoe-Chiba và chiến lược từ bỏ sớm, so với các phương pháp song song hóa tính các khoảng cách DTW như:
- Song song hóa DTW cổ điển (ký hiệu là pDTW)
- Song song hóa DTW kết hợp ràng buộc dải Sakoe-Chiba (ký hiệu là pDTW_SC)
63 - Song song hóa DTW với kỹ thuật cắt tỉa ràng buộc chặn dưới (ký hiệu là pDTW_LB)
- Song song hóa DTW kết hợp cả hai ràng buộc dải Sakoe-Chiba và kỹ thuật cắt tỉa ràng buộc chặn dưới (ký hiệu là pDTW_LB_SC).
Thực nghiệm kiểm tra kết quả kết chuỗi con
Với loại thực nghiệm này, luận văn tiến hành xác định các kết quả truy vấn chuỗi con trong toàn bộ chuỗi thời gian Mẫu truy vấn 𝑄 là một đoạn được tính từ hai cực trị liên tiếp trong chuỗi thời gian ban đầu Ứng dụng tiến hành tìm kiếm vùng và trả về tập 𝑆 chứa toàn bộ chuỗi con tương tự thỏa điều kiện 𝑑(𝑄, 𝑆 𝑖 ) ≤ 𝜀
Theo cách thức truyền thống của nhiều bài viết nghiên cứu trước đó, độ chính xác của thuật toán tìm kiếm tương tự về cơ bản dựa trên phân tích của các chuyên gia về các chuỗi kết được phát hiện bởi thuật toán đó Điều đó nghĩa là bằng phương pháp quan sát, có thể kiểm tra một cách trực quan các kết quả biểu diễn trên đồ thị, ta xác định xem liệu các chuỗi kết tạo được với chuỗi truy vấn bằng thuật toán được đề xuất trong một chuỗi thời gian cụ thể có gần giống hình dạng chuỗi con truy vấn hay không Nếu kết quả kiểm tra là khả quan trong hầu hết các bộ dữ liệu thử nghiệm, ta có thể kết luận rằng thuật toán được đề xuất sẽ đưa ra kết quả tìm kiếm tương tự là chính xác
Dưới đây là một số hình ảnh một cặp chuỗi con tương tự được tìm thấy trên từng bộ dữ liệu của các phương pháp song song hóa đề xuất như pDTW, pDTW_SC, pDTW_LB, pDTW_LB_SC Trong đó, các chuỗi con của hai chuỗi thời gian đem kết được liệt kê ở hai bảng bên trái (bảng trên là các chuỗi con được phân đoạn của chuỗi thời gian thứ nhất và bảng dưới là của chuỗi thời gian thứ hai) Ứng với từng chuỗi con, các chuỗi con tương tự tìm được của chuỗi thời gian còn lại sẽ được trình bày ở bảng kết quả cạnh bên (bảng trên tương ứng với các chuỗi con tương tự tìm được trên chuỗi thời gian thứ hai khi kết với chuỗi thời gian thứ nhất, tương tự cho bảng bên dưới) Hình dạng của hai chuỗi con này được thể hiện trong đồ thị Join Result Đây là kết quả của phép kết chuỗi con trên chuỗi thời gian
Từ các hình ảnh có được thông qua thực nghiệm cùng với việc kiểm tra so sánh với các kết quả từ công trình nghiên cứu [14] trước đó, các bộ kết quả được cung cấp bởi các giải pháp đề xuất của luận văn là trùng khớp với các kết quả của công trình
64 nghiên cứu [14] trên tất cả các bộ dữ liệu thử nghiệm Từ đó, ta có thể kết luận tính chính xác của phương pháp đề xuất
Hình 5.1: Kết quả kết chuỗi con của Time series 1 trên bộ dữ liệu Chromosome
Hình 5.2: Kết quả kết chuỗi con của Time series 2 trên bộ dữ liệu Chromosome
65 Hình 5.3: Kết quả kết chuỗi con của Time series 1 trên bộ dữ liệu EEG
Hình 5.4: Kết quả kết chuỗi con của Time series 2 trên bộ dữ liệu EEG
66 Hình 5.5: Kết quả kết chuỗi con của Time series 1 trên bộ dữ liệu ECG
Hình 5.6: Kết quả kết chuỗi con của Time series 2 trên bộ dữ liệu ECG
67 Hình 5.7: Kết quả kết chuỗi con của Time series 1 trên bộ dữ liệu Power
Hình 5.8: Kết quả kết chuỗi con của Time series 2 trên bộ dữ liệu Power
68 Hình 5.9: Kết quả kết chuỗi con của Time series 1 trên bộ dữ liệu Stock
Hình 5.10: Kết quả kết chuỗi con của Time series 2 trên bộ dữ liệu Stock
Thực nghiệm tốc độ thực thi
Với loại thực nghiệm này, luận văn tiến hành trên từng loại dữ liệu với những chiều dài khác nhau từ 10,000 điểm đến 50,000 điểm để đánh giá được tốc độ xử lý song song hóa Để thuận tiện khi đánh giá, hai chuỗi đem kết có chiều dài bằng nhau và tiến hành thực cho hai hệ thống với các GPU có sức mạnh khá nhau
Bảng 5-3 cho thấy thời gian thực thi của các phương pháp trên Máy tính Intel®
Core™ i7-4700HQ với card đồ họa GTX 850M 4GB của hãng NVIDIA Theo kết quả có được từ Bảng 5-3, ta thấy thời gian thực thi của các phương pháp song song hóa đều cho thời gian thực thi tốt hơn so với giải pháp của UCR_DTW Đối với tập dữ liệu Power và EEG, phương pháp song song hóa DTW cổ điểm pDTW cho thời gian xử lý tốt hơn trung bình 1.5 lần so với UCR_DTW Các phương pháp còn lại pDTW_SC, pDTW_LB và pDTW_LB_SC lần lượt trung bình nhanh gấp xấp xỉ khoảng 2, 3 và 5 lần so với UCR_DTW Biểu đồ các Hình 5.11 và Hình 5.12 cho thấy kết quả rõ ràng hơn về tốc độ xử lý song song này
Bảng 5-3: Thời gian thực thi của các phương pháp
Dữ liệu Độ dài Phương pháp
UCR_DTW pDTW pDTW_SC pDTW_LB pDTW_LB_SC
70 Hình 5.11: Biểu đồ thời gian thực thi trên dữ liệu Power
Hình 5.12: Biểu đồ thời gian thực thi trên dữ liệu EEG Ở các tập dữ liệu là ECG, Chromosome và Stock, thời gian thực thi của UCR_DTW tỏ ra hiệu quả hơn nhờ vào khả năng cắt tỉa Tỷ lệ cắt tỉa trung bình của các tập dữ liệu này lên đến khoảng 95% số lượng khoảng cách DTW cần phải tính Do đó, với sức mạnh phần cứng GPU sử dụng trong thực nghiệm chưa thể xử lý được tốt nhất với những dữ liệu này Các Hình 5.13, Hình 5.14 và Hình 5.15 minh họa rõ hơn về thời gian thực thi của các giải thuật trên từng loại dữ liệu
UCR_DTW pDTW pDTW_SC pDTW_LB pDTW_LB_SC
UCR_DTW pDTW pDTW_SC pDTW_LB pDTW_LB_SC
UCR_DTW pDTW pDTW_SC pDTW_LB pDTW_LB_SC
UCR_DTW pDTW pDTW_SC pDTW_LB pDTW_LB_SC
71 Hình 5.13: Biểu đồ thời gian thực thi trên dữ liệu ECG
Hình 5.14: Biểu đồ thời gian thực thi trên dữ liệu Chromosome
UCR_DTW pDTW pDTW_SC pDTW_LB pDTW_LB_SC
UCR_DTW pDTW pDTW_SC pDTW_LB pDTW_LB_SC
UCR_DTW pDTW pDTW_SC pDTW_LB pDTW_LB_SC 0
UCR_DTW pDTW pDTW_SC pDTW_LB pDTW_LB_SC
72 Hình 5.15: Biểu đồ thời gian thực thi trên dữ liệu Stock
Khi tập dữ liệu càng lớn, thời gian thực thi của pDTW hay pDTW_SC tăng càng lớn, gần như theo hàm mủ Trong khi đó, UCR_DTW lại cho thời gian thực thi nhanh hơn gấp nhiều lần Nhờ kỹ thuật cắt tỉa mà đối với các loại dữ liệu này, thời gian thực thi tăng thấp, gần như theo hàm tuyến tính Tuy nhiên, các phương pháp pDTW_LB hay pDTW_LB_SC cho thời gian thực thi tốt hơn cả UCR_DTW, nhờ khả năng song song việc tính toán các khoảng cách DTW còn lại sao khi cắt tỉa
Nói tóm lại, từ các kết quả đạt được, ta có thể thấy rằng tùy vào từng loại dữ liệu mà thời gian thực thi của bài toán kết chuỗi con trên chuỗi thời gian là khác nhau đối với từng kỹ thuật tăng tốc bằng phần cứng hay phần mềm Nếu hai chuỗi thời gian đem kết mà có sự khác biệt lớn về hình dạng thì kỷ thuật tăng tốc bằng phần mềm sẽ đáp ứng thời gian tốt hơn nhờ khả năng cắt tỉa khá tốt so với giải pháp song song hóa bằng phần cứng chân phương, cụ thể là GPU Ngược lại, đối với hai chuỗi đem kết gần như tương đồng nhau, thì kỹ thuật song song hóa dựa trên GPU lại đáp ứng thời gian tốt hơn Do đó, nếu biết kết hợp ưu điểm của cả hai kỷ thuật này lại với nhau thì thời gian thực thi của bài toán kết chuỗi con còn tăng hơn gấp nhiều lần Chẳng hạn như trong đề xuất của luận văn, kết hợp ưu điểm của kỷ thuật cắt tỉa của giải pháp phần mềm và sức mạnh xử lý song song của của phần cứng GPU Thời gian thực thi của phương pháp tốt hơn các
UCR_DTW pDTW pDTW_SC pDTW_LB pDTW_LB_SC 0
UCR_DTW pDTW pDTW_SC pDTW_LB pDTW_LB_SC
73 phương pháp khác rất nhiều trên tất cả các tập dữ liệu thực nghiệm (trên tập dữ liệu Chromosome chiều dài 100,000 điểm, thời gian thực thi chỉ mất khoảng 13,2 phút)
5.3.2 GPU Tesla P100 Để có thể đánh giá được hiệu quả hơn nữa của việc thực thi song song nhờ vào sức mạnh phần cứng GPU, luận văn đã thực hiện thử nghiệm các phương pháp đề xuất trên những phần cứng có sức mạnh lớn hơn Bảng 5-4 thể hiện một số thông số cơ bản của card đồ họa này
Bảng 5-4: Một số thông số của kiến trúc Pascal
Peak Performance (single - precision) 9300 GFLOPS Peak Performance (double - precision) 4700 GFLOPS
Thời gian thực thi cho bài toán kết chuỗi con trên chuỗi thời gian được trình bày như trong Bảng 5-5 Đơn vị thời gian là phút Có thể nhận thấy, các kết quả đạt được thời gian trung bình nhanh hơn gấp khoảng 3 - 4 lần ở tất cả các phương pháp so với khi thực hiện trên GTX 850M như trong phần thực nghiệm 5.3.1
74 Bảng 5-5: Thời gian thực thi trên GPU Tesla P100
Dữ liệu Độ dài Phương pháp pDTW pDTW_SC pDTW_LB pDTW_LB_SC
Chương này điểm lại toàn bộ công việc của luận văn bao gồm: tổng kết về bài toán kết chuỗi con trên dữ liệu chuỗi thời gian, những đóng góp của đề tài và hướng phát triển trong tương lai.
Tổng kết nội dung của Luận văn
Điểm qua các công trình liên quan, bài toán kết chuỗi con có thể được chia thành hai công đoạn chính: phân đoạn chuỗi thời gian và so trùng chuỗi con dựa vào từng phân đoạn để tạo nên hai tập dữ liệu kết quả
Về vấn đề phân đoạn chuỗi thời gian, luận văn sử dụng kỹ thuật xác định các điểm cực trị quan trọng Kết quả của quá trình này là chuỗi thời gian được cắt thành nhiều đoạn Mỗi đoạn có hai đầu mút là hai điểm cực trị liền kề nhau Các phân đoạn của chuỗi thời gian này đóng vai trò là mẫu truy vấn 𝑄 trong quá trình tìm kiếm so trùng chuỗi con trên chuỗi thời gian còn lại
Về bài toán tìm kiếm tương tự, luận văn sử dụng giải thuật cửa sổ trượt dịch chuyển từng điểm Ưu điểm của hướng tiếp cận này là không mắc lỗi tìm sót ứng viên Thực nghiệm cho thấy các ứng viên tìm được là khá tốt Độ tương tự được sử dụng là độ đo xoắn thời gian động DTW có bổ sung thêm ràng buộc Sakoe-Chiba nhằm tăng tốc quá trình tính toán và loại bớt việc xác định những đường xoắn không có ý nghĩa Quá trình so trùng chuỗi con được thực hiện song song hóa trên GPU Trong đó, mỗi luồng của GPU sẽ đảm nhận việc xác định một phân đoạn của chuỗi thời gian có tương tự với chuỗi con truy vấn hay không, hay nói cách khác, mỗi luồng của GPU sẽ tính toán một ma trận xoắn DTW của cửa số trượt ứng với độ dài của chuỗi con truy vấn
Ngoài ra, luận văn cũng sử dụng kỹ thuật ràng buộc chặn dưới để cắt tỉa bớt các chuỗi con không cần thiết phải xác định khoảng cách DTW Độ phức tạp tính toán của cận dưới thấp hơn nhiều so với khoảng cách DTW, vì vậy kỹ thuật này có thể sử dụng để loại bỏ bớt việc tính các khoảng cách DTW của các chuỗi con không cần thiết, trước khi tính toán khoảng cách DTW thực tế cần thiết của những chuỗi con còn lại Phương pháp sử dụng trong luận văn này là xếp chồng các chặn dưới như LB_Kim đơn giản, LB_Keogh và LB_Keogh đảo ngược thành các tầng Trong quá trình tìm kiếm tương tự,
76 nếu giá trị chặn dưới của một tầng không vượt quá ngưỡng đã cho, thì chặn dưới của tầng tiếp theo sẽ được tính cho đến khi xác định được chuỗi con thật sự cần phải tính khoảng cách DTW, và việc tính toán này sẽ được xử lý song song trên GPU để tăng tốc quá trình kết.
Những đóng góp của đề tài
Luận văn đã đưa ra một hướng tiếp cận mới để giải quyết bài toán kết chuỗi con trên dữ liệu chuỗi thời gian trong việc tăng tốc thời gian thực thi của bài toán này
Luận văn đã xây dựng được giải pháp xử lý song song dựa trên GPU cho bài toán kết chuỗi con, bằng cách song song hóa quá trình tìm kiếm tương tự Nói cách khác, luận văn đã tổng quát hóa bài toán so trùng chuỗi con với một chuỗi con có chiều dài cố định thành bài toán kết chuỗi con với số lượng lớn các chuỗi con và chiều của chúng là khác nhau Tức, quá trình thực thi và cấp phát bộ nhớ cho GPU là cấp phát động thay vì là cấp phá tĩnh như bài toán so trùng chuỗi con Quá trình tìm kiếm tương tự là công việc tốn rất nhiều thời gian trong bài toán kết chuỗi con trên chuỗi thời gian Tận dụng được sức mạnh phần cứng của GPU ở khả năng xử lý số thực nhanh, xử lý song song tốt cho những tác vụ đơn giản, mà công việc tính toán độ đo xoắn thời gian động được thực thi song song thay vì là tuần tự như trên CPU và nhanh hơn so với thực thi tính toán số thực trên CPU Do vậy, quá trình kết chuỗi con được thực thi nhanh hơn so với giải pháp tuần tự thuần túy
Luận văn đã đưa ra được những đánh giá và so sánh cụ thể giữa giải pháp tăng tốc bằng các kỹ thuật phần mềm và kỹ thuật tăng tốc dựa vào phần cứng GPU trong việc giải quyết bài toán kết chuỗi con trên dữ liệu chuỗi thời gian Tùy thuộc vào hai chuỗi dữ liệu đem kết có độ tương đồng về hình dạng nhiều hay ít mà thời gian thực thi của hai phương pháp là khác nhau Nếu hai chuỗi thời gian đó chênh lệch nhiều về hình dạng thì kỹ thuật tăng tốc bằng phần mềm tỏ ra hiệu quả hơn Nhưng, nếu hai chuỗi thời gian kết mà ít có độ tương đồng về hình dạng thì tăng tốc dựa vào phần cứng là phương pháp hiệu quả
Cuối cùng, luận văn hiện thực được một phương pháp kết hợp ưu điểm của cả hai kỹ thuật dựa vào phần cứng và phần mềm Với kỹ thuật phần mềm, số lượng khoảng cách độ đo xoắn thời gian động cần phải tính sẽ được thu giảm bớt Như vậy, các khoảng
77 cách độ đo xoắn thời gian động cần tính còn lại sẽ được xử lý song song trên các thiết bị GPU Nói chung, luận văn đã xây dựng được một ứng dụng giải quyết bài toán kết chuỗi con hiệu quả hơn về mặt thời gian rất nhiều.
Hướng phát triển
Kết quả thực nghiệm trên nhiều bộ dữ liệu đều khá chính xác Tuy nhiên, dữ liệu áp dụng cho bài toán này là dữ liệu tĩnh (static data) Do đó, hướng phát triển tiếp theo của đề tài có thể là mở rộng phương pháp kết chuỗi con dựa vào GPU sao cho phù hợp với dữ liệu chuỗi thời gian dạng luồng (streaming time series)
Thuật toán tính toán độ đo xoắn thời gian động trên GPU sử dụng trong luận văn được áp dụng dựa theo định nghĩa Do đó, đề tài có thể nghiên cứu thêm về cách tính toán độ do này trên GPU mà dùng kỹ thuật Tính tổng tiền tố (Prefix Sum Computation) như đề cập trong công trình [24]
Ngoài ra, luận văn chỉ sử dụng một GPU để giải quyết bài toán nên mỗi lần chỉ có thể xử lý song song một chuỗi con truy vấn Do đó, đề tài có thể mở rộng hơn bằng cách kết hợp nhiều thiết bị GPU Khi đó, mỗi GPU có thể chịu trách nhiệm xử lý cho một chuỗi truy vấn con