2025/07/27

☕ Nhàn đàm S&T: Rubin Observatory 🔭

Phác họa bài post:

🛈. Đề dẫn.

Mục tiêu khoa học của Rubin Observatory là gì?

Camera số của Rubin Observatory to cỡ nào?

Ảnh của Rubin Observatory được “vận chuyển” ra sao?

Serendipity trong nghiên cứu khoa học là gì?

Đợi tương lai

Trải nghiệm ảnh “first light” của Rubin Observatory

~

Để giúp anh/chị quyết định có đọc tiếp hay không, tôi xin phép cung cấp các thông tin liên quan đến bài post này như sau:

·       Chủ đề: Astronomy (Thiên văn học)

·       Tính thời sự: tháng 06/2025

·       Thời gian đọc: 8 phút, kể cả thời gian uống cà phê (uống cà phê xong là đọc xong)

-

Xin phép anh/chị hôm nay chúng ta đàm luận về Rubin Observatory – tạm dịch là “Đài thiên văn Rubin”, trong bài viết này tôi gọi tắt là Rubin. Năm 2022 (cách đây 3 năm) người ta đã nói nhiều về đài thiên văn Webb – “đặt” tại điểm L2, cách Trái Đất 1.5 triệu km và đứng thẳng hàng với Trái Đất – Mặt Trời, có thể “soi” đến gần “tâm” của vũ trụ (điểm nổ Big Bang). (Nếu rỗi anh/chị có thể tham khảo bài nhàn đàm của tôi ở đây.) Tưởng thế là “khiếp” rồi chứ?! Nhưng gần đây báo chí là rộ lên các bức ảnh vũ trụ của Rubin. Chắc phải có lý do nào đó chứ - chả nhẽ thừa tiền để xây thêm các đài thiên văn mới?! 😊

🔭

Mục tiêu khoa học của Rubin Observatory là gì?

Sứ mệnh chính của Rubin: chụp ảnh liên tục toàn bộ bầu trời phía nam bán cầu trong vòng 10 năm, tạo ra một “bộ phim” về vũ trụ.

Phim về bản chất là chuỗi các ảnh (frame) sắp xếp theo thứ tự thời gian. Cách làm của Rubin là cứ vài đêm chụp một ảnh. Sau 10 năm người ta ghép tập hợp các ảnh đó lại thành một bộ phim. Phim này là phim về sự thay đổi của vũ trụ trong vòng 10 năm!

Chú ý rằng, các đài thiên văn khác (như Webb) chỉ “chụp ảnh” vũ trụ - tức là chỉ ghi lại một khoảnh khắc thời gian. Còn Rubin thì “quay phim” – về mặt nguyên tắc có thể quan sát được sự biến đổi của vũ trụ.

Bằng việc quay phim vũ trụ, các nhà khoa học kỳ vọng nhìn thấy các hiện tượng thay đổi “nhanh” như phát hiện các siêu tân tinh (supernovae), các vụ nổ tia gamma, phát hiện bất kỳ sao chổi hoặc tiểu hành tinh nào có thể di chuyển qua hệ mặt trời, …

Ngoài sứ mệnh chính, các nhà khoa học còn có các tham vọng khác đối với Rubin:

·       Lập danh mục Hệ Mặt trời: Khám phá và phân loại hàng triệu tiểu hành tinh và sao chổi, bao gồm cả các Vật thể Cận Trái đất (NEO: Near-Earth Object) có khả năng gây nguy hiểm cho Trái Đất, phát hiện các vật thể giữa các vì sao.

·       Lập bản đồ Dải Ngân hà (Milky Way): Tạo ra một bản đồ chi tiết về thiên hà của chúng ta, giúp tái tạo lịch sử và nâng cao hiểu biết về sự hình thành và tiến hóa của nó.

·       Hiểu về vật chất tối (Dark Matter) và năng lượng tối (Dark Energy): Rubin sẽ cung cấp dữ liệu quan trọng giúp các nhà khoa học làm sáng tỏ những bí ẩn của các thành phần bí hiểm này (vật chất tối và năng lượng tối chiếm khoảng 95% vũ trụ).

🔭

Camera số của Rubin Observatory to cỡ nào?

Một cách cô đọng: là máy ảnh loại LSST (Large Synoptic Survey Telescope: Kính thiên văn khảo sát toàn cảnh cỡ lớn) có mặt ảnh rộng tới 3.200 megapixel (3,2 gigapixel), có kích thước tương đương một chiếc ô tô nhỏ và nặng 2.800 kg. Nó có thể chụp một khu vực bầu trời tương đương 48 lần trăng tròn chỉ trong một lần phơi sáng 30 giây.

Vì anh/chị trên diễn đàn này đều là dân kỹ thuật cả nên tôi xin nói kỹ hơn một vài chi tiết.

·       Màn hình 3.200 megapixel to cỡ nào? Để so sánh: một TV HD (high-definition) có 2.073.600 pixel (= 1920 x 1080), làm tròn là 2 megapixel. Như vậy, một cách hình ảnh, camera của Rubin gấp 1.600 lần màn hình TV HD!

Chi tiết

Tại sao lại có con số 3.200 megapixel?

Trả lời: Lý do: camera có hệ thống chụp ảnh là mạng gồm 189 bộ dò CCD, mỗi bộ có 16 megapixel (nguồn). Thực hiện phép nhân chúng ta được:

189*16*(2^20) = 3.170.893.824 ≈ 3.200 mega.

❮/Chi tiết

---

·       Mỗi một lần chụp, camera này có thể “soi” được một khu vực bầu trời tương đương khoảng 48 lần mặt trăng (lúc trăng tròn).

Chi tiết

Căn cứ vào đâu mà người ta so sánh khuông nhìn của camera của Rubin với mặt trăng?

Trả lời: Mỗi camera có một trường nhìn (tiếng Anh: field of view – viết tắt là FOV). Trong ngữ cảnh của một kính thiên văn, trường nhìn là:

Vùng bầu trời mà kính thiên văn có thể quan sát được trong một lần nhìn.

Nó giống như “cửa sổ” mà qua đó kính thiên văn nhìn ra vũ trụ. Trường nhìn càng rộng thì kính thiên văn càng có thể thu được nhiều vùng trời hơn trong một bức ảnh.

Người ta thường đo FOV bằng góc (đường kính của góc), đơn vị đo là độ (degrees). FOV của trăng tròn là 0.5 độ. FOV của Rubin là 3.5 độ (nguồn).

Diện tích vùng bầu trời mà Rubin có thể quan sát được trong một lần nhìn là diện tích hình tròn có đường kính 3.5 độ là π*(3.5/2)^2 ≈ 9.6 (độ vuông).

Diện tích của mặt trăng (lúc trăng tròn) nhìn từ mặt đất là π*(0.5/2)^2 ≈ 0.2 (độ vuông).

Lấy 9.6 / 0.2 = 48.

❮/Chi tiết

🔭

Ảnh của Rubin Observatory được “vận chuyển” ra sao?

·       Đài quan sát nằm trên đỉnh El Peñón của Cerro Pachón, một ngọn núi cao 2.682 mét (8.799 ft) ở Vùng Coquimbo, phía bắc Chile.

·       Cơ sở chính của Rubin cách đỉnh El Peñón khoảng 100 km (62 dặm) theo đường bộ, tại thành phố La Serena.

Đường đi của dữ liệu ảnh:

🔭 Thu ảnh trên đỉnh núi El Peñón.

Truyền về cơ sở chính của đài tại thành phố La Serena (Chile).

Tiếp đó dữ liệu được truyền về thủ đô Santiago của Chile.

Dữ liệu được truyền tiếp về Miami (bang Florida – Mỹ) bằng đường truyền dự phòng đôi (redundant routes).

Từ đây dữ liệu được mã hóa (encrypted) gửi đến United States Intelligence Community (IC) (Cộng đồng Tình báo Hoa Kỳ) nằm ở bang California. Tại đây, một hệ thống tự động lọc dữ liệu: loại bỏ ảnh có chứa vệ tinh do thám của Mỹ, bỏ các ảnh có “vệ tinh chen ngang” như các vệ tinh của Starlink, … Quy trình này mất 80 tiếng đồng hồ.

Cuối cùng, dữ liệu được lưu tại Rubin Observatory United States Data Facility (USDF) đặt tại SLAC (SLAC National Accelerator Laboratory) ở Menlo Park, bang California.

Vắn tắt: El Peñón La Serena Santiago Miami IC USDF.

---

Bên lề

Nói thêm một chút về dung lượng dữ liệu và năng lực xử lý ảnh của Rubin:

Người ta lập kế hoạch chụp 200.000 ảnh /năm. Chúng ta đã biết mỗi ảnh có 3.170.893.824 pixel (≈3,2 gigapixel). Mỗi pixel chứa 3 byte (RGB). Đem nhân 3 con số này lại với nhau ta được 1.902.536.294.400.000 (≈ 1,9 petabyte). Một lượng dữ liệu khổng lồ!

Người ta chụp ảnh theo 3 thang thời gian (timescales):

·       Tức thì (prompt): chụp ảnh trong vòng 60 giây: loại ảnh này dùng để cảnh báo.

·       Hàng ngày (daily): quan sát vũ trụ trong vòng 24 giờ. Ảnh chụp vào ban đêm.

·       Phát hành hàng năm (annual release): quan sát vũ trụ từ đầu kỳ cho đến thời điểm phát hành.

---

Với dung lượng dữ liệu khổng lồ thì việc xử lý và lưu ảnh là một thách thức đối với công nghệ. Vào năm 2018, người ta ước tính Rubin cần một DC với năng lực tính toán 250 teraflops và cần dung lượng lưu trữ 100 petabytes.

❮/Bên lề

🔭

④ Serendipity trong nghiên cứu khoa học là gì?

Nghĩa thông thường của từ “serendipity” là “sự may mắn”. Thuật ngữ này được Horace Walpole đặt ra vào năm 1754. Đọc trên Wikipedia thì được diễn giải là “active luck” (may mắn chủ động), “unexpected discovery” (khám phá bất ngờ), “fortunate chance” (vận may).

-

Thuật ngữ “serendipity” thường được áp dụng cho những phát minh được thực hiện một cách tình cờ hơn là cố ý. Một số ví dụ nổi tiếng:

1.     Penicillin – Alexander Fleming phát hiện ra nó vào năm 1928 khi ông nhận thấy một loại nấm mốc đã giết chết vi khuẩn trên đĩa petri mà ông chưa rửa sạch.

2.     Lò vi sóng – Percy Spencer nhận ra một thanh kẹo trong túi ông bị chảy ra khi ông đứng gần thiết bị radar.

3.     Bức xạ nền vũ trụ (CMB: Cosmic Microwave Background) – Arno Penzias và Robert Wilson vô tình phát hiện ra tín hiệu còn lại từ Vụ Nổ Lớn (Big Bang) khi đang cố loại bỏ "nhiễu" khỏi ăng-ten của họ.

-

Do Rubin thu thập dữ liệu khổng lồ và đa dạng — rất lý tưởng cho serendipity:

  • Các siêu tân tinh chưa từng biết đến
  • Những vật thể thoáng qua kỳ lạ
  • Quỹ đạo tiểu hành tinh bất thường
  • Hiện tượng “lạ” của vũ trụ mà chúng ta chưa từng được biết

Những khám phá này có thể không phải mục tiêu ban đầu, nhưng chúng có thể thay đổi nhận thức khoa học.

-

Tóm tắt:     Serendipity trong khoa học là khi sự tò mò gặp đúng cơ hội, và tạo ra những đột phá mà ban đầu không ai cố ý tìm — nhưng có người đủ tinh ý để nhận ra.

Nghiên cứu khoa học cũng gặp may nhưng cái may chỉ đến đối với các nhà khoa học đủ tầm.

🔭

Đợi tương lai

Rubin chưa chính thức hoạt động, phải cuối năm nay (2025) mới “full survey operations” (hoạt động khảo sát toàn phần). Và phải 2 năm sau công chúng mới tiếp cận được các thước phim đầu tiên về vũ trụ. Sau đó hàng năm chúng ta lại được chiêm ngưỡng tập tiếp theo. Phim sẽ kết thúc vào năm 2035 (10 năm nữa). Kỳ vọng là đến lúc đấy chúng ta sẽ biết thêm nhiều điều mới lạ về vũ trụ.

🔭

Trải nghiệm ảnh “first light” của Rubin Observatory

Trong ngữ cảnh thiên văn học, “first light” ám chỉ việc sử dụng kính viễn vọng lần đầu tiên để chụp ảnh thiên văn sau khi kính viễn vọng được chế tạo. Có thể coi “first light” là mẻ ảnh kiểm thử. Xin gửi đến anh/chị một vài ảnh kiểm thử camera Rubin (nguồn).

-

#1.       The Cosmic Treasure Chest

[Hòm kho báu vũ trụ]



-

Ghép từ hơn 1.100 lần chụp, bức ảnh tổng hợp bao gồm khoảng 10 triệu thiên hà, tương đương khoảng 0,05% trong tổng số xấp xỉ 20 tỷ thiên hà mà Đài quan sát Rubin sẽ ghi lại trong thập kỷ tới.

Ngày tạo ảnh: 5/6/2025, cỡ ảnh: 10.000 × 5.262 px, dung lượng: 151,03MB

-

#2.       Virgo Cluster Finder Chart (annotated)

[Biểu đồ tìm cụm thiên hà Virgo (có chú thích)]



Từ những ngôi sao đến các cụm thiên hà rộng lớn, Rubin đã biến những khoảng không gian tưởng chừng trống rỗng thành những tấm thảm lấp lánh.

Ngày tạo ảnh: 5/6/2025, cỡ ảnh: 10.000 × 5.262 px, dung lượng: 150,2MB

-

#3.       Cosmic Drama

[Vũ kịch vũ trụ]



Ảnh này ghi lại một phần nhỏ của cụm thiên hà Virgo (Xử Nữ), hé lộ cả quy mô rộng lớn lẫn những chi tiết mờ nhạt của vùng vũ trụ biến động này. Những ngôi sao sáng thuộc Dải Ngân hà của chúng ta tỏa sáng ở tiền cảnh, trong khi một biển thiên hà đỏ nhạt ở xa điểm xuyết nền.

Ngày tạo ảnh: 5/6/2025, cỡ ảnh: 11.181 × 17.871 px, dung lượng: 599,48MB

-

#4.       Cosmic Abundance

[Vũ trụ đa dạng]



Ảnh này ghi lại một phần nhỏ của cụm thiên hà Virgo (Xử Nữ), mang đến một cái nhìn sống động về sự đa dạng của vũ trụ. Có thể thấy hai thiên hà xoắn ốc nổi bật, ba thiên hà đang hợp nhất, các nhóm thiên hà ở cả gần và xa, những ngôi sao trong Dải Ngân hà của chúng ta, và còn nhiều điều khác nữa.

Ngày tạo ảnh: 5/6/2025, cỡ ảnh: 10.013 × 6.133 px, dung lượng: 184,26MB

-

#5.       Trifid and Lagoon Nebulae Finder Chart (annotated)

[Biểu đồ tìm kiếm cụm tinh vân Trifid và Lagoon (có chú thích)]



Ảnh này được ghép ừ 678 ảnh riêng lẻ. Việc kết hợp nhiều ảnh theo cách này giúp làm rõ những chi tiết mờ nhạt hoặc vô hình mà mắt thường không thấy được, chẳng hạn như các đám mây khí và bụi tạo nên tinh vân Trifid (phía trên) và tinh vân Lagoon, vốn cách Trái Đất hàng nghìn năm ánh sáng.

-

Hình ảnh này mang đến một cái nhìn cận cảnh hơn về khu vực xung quanh tinh vân Trifid và tinh vân Lagoon, như được thấy trong bức ảnh “first light” do Đài quan sát Rubin chụp. Tinh vân Trifid (còn được gọi là Messier 20) là một đám mây khí và bụi sáng rực rỡ, đầy màu sắc, nằm cách Trái Đất khoảng 5.000 năm ánh sáng trong chòm sao Nhân Mã. Điều khiến nó đặc biệt ấn tượng là sự kết hợp của nhiều đặc điểm trong cùng một nơi: một tinh vân phát xạ hồng rực rỡ, một tinh vân phản xạ màu xanh dịu, và các dải bụi tối chia tinh vân thành ba phần — từ đó có tên gọi “Trifid” (ba phần). Bên trong, những ngôi sao mới đang hình thành, phát ra những luồng gió mạnh và bức xạ dữ dội, khắc nên hình thù của các đám khí xung quanh. Nó mang đến cho chúng ta một cái nhìn kịch tính về cách những ngôi sao khổng lồ định hình môi trường xung quanh ngay khi chúng mới ra đời.

Phía dưới tinh vân Trifid trong hình là tinh vân Lagoon (hay Messier 8), một “vườn ươm sao” sống động khác, phát sáng cách chúng ta khoảng 4.000 năm ánh sáng. Bạn thậm chí có thể quan sát tinh vân Lagoon chỉ với một ống nhòm hoặc kính thiên văn nhỏ. Ở trung tâm tinh vân là một cụm sao trẻ, khổng lồ — bức xạ mạnh mẽ từ chúng làm sáng rực khí xung quanh và định hình các đám mây xoáy thành những cấu trúc phức tạp. Tinh vân Lagoon là một nơi tuyệt vời để các nhà khoa học nghiên cứu các giai đoạn sớm nhất của quá trình hình thành sao — cách những đám mây khổng lồ sụp đổ, cách các cụm sao hình thành, và cách những ngôi sao mới sinh bắt đầu biến đổi môi trường của chúng.

Ngày tạo ảnh: 28/5/2025, cỡ ảnh: 10.000 × 6.131 px, dung lượng: 183,25MB

-

🔭

🤔 Thư giãn

Trước khi kết thúc bài post, xin mời anh/chị thưởng thức một cốc cà phê được pha trên vũ trụ. (Credit craiyon.com)

Chúc anh/chị đọc vui nhã!








-

LeVanLoi

2025/07/13

☕ Nhàn đàm ICT: LLM Token 𐓙

Phác họa bài post:

Đề dẫn.

. Word-level Tokenizer

. Character-level Tokenizer

. Byte-pair encoding

. BBPE (Byte-level Byte Pair Encoding) Tokenizer

. Tiktokenizer

. Multimodal [image, video, audio] token?

. Context Window

 🤔. Suy ngẫm chậm.

~

Để giúp anh/chị quyết định có đọc tiếp hay không, tôi xin phép cung cấp các thông tin liên quan đến bài post này như sau:

·       Chủ đề: Machine Learning

·       Tính thời sự: tháng 10/2024

·       Thời gian đọc: 8 phút, kể cả thời gian uống cà phê (uống cà phê xong là đọc xong)

-

Đề dẫn.

Tôi tin rằng anh/chị đã quá quen thuộc với LLM (Large Language Model) như ChatGPT (OpenAI), Gemini (Google), Claude (Anthropic), … Việc sử dụng chúng cũng vô cùng đơn giản, chỉ cần đặt một câu truy vấn là chúng hồi đáp:

[Câu truy vấn] [LLM] [Hồi đáp]

[Câu truy vấn] và [Hồi đáp] thường là văn bản đơn thuần. Câu hỏi tò mò đặt ra với chúng ta là mạng nơ-ron (Neural Network – viết tắt là NN) xử lý đầu vào trực tiếp từ văn bản hay phải thông qua một biến đổi nào trước khi xử lý? Câu trả lời là có biến đổi văn bản thành mã với tên gọi là token trước khi chạy mạng nơ-ron. Có thể hình dung một cách nôm na như sau:

[Câu truy vấn] [«chuỗi token» NN «chuỗi token»] [Hồi đáp]

Trong sơ đồ trên:

·       Văn bản của [Câu truy vấn] được mã hóa thành chuỗi token

·       Chuỗi token là đầu vào của mạng nơ-ron (ký hiệu NN)

·       Đầu ra của mạng nơ ron là một chuỗi token khác

·       Giải mã chuỗi token đầu ra thành văn bản [Hồi đáp]

-

Về vấn đề từ nguyên (etymology), tôi cũng đã hỏi “ý kiến” của các chatbot về cách dịch từ “token” ra tiếng Việt. Chúng “đồng loạt” khuyên là nên giữ nguyên từ token như là một từ “nhập khẩu” từ tiếng Anh và “đồng hóa” từ này thành từ tiếng Việt. Vì vậy, trong khuôn khổ bài đàm luận này, tôi xin nghe theo lời khuyên của chúng.

-

Bài post này có cấu trúc như sau:

. Word-level Tokenizer: nguyên lý việc mã hóa “từ” → token

. Character-level Tokenizer: nguyên lý việc mã hóa “ký tự” → token

. Byte-pair encoding: nguyên lý nén chuỗi ký tự → token

. BBPE (Byte-level Byte Pair Encoding) Tokenizer: nguyên lý nén chuỗi byte → token

. Tiktokenizer: trải nghiệm biến đổi văn bản thành token.

. Multimodal [image, video, audio] token?: một số phương pháp mã hóa đa phương thức [ảnh, video, âm thanh] → token

. Context Window: RAM của LLM

---

. Word-level Tokenizer

Trong thời kỳ đầu của các nghiên cứu NLP (Natural Language Processing) – trước năm 2018, các mô hình mạng nơ-ron (Neural Network) thường dùng phương pháp mã hóa Word-level Tokenizer, ví dụ: Word2Vec (Mikolov et al., 2013), GloVe (Pennington et al., 2014), ELMo (Peters et al., 2018).

Ý tưởng là chia đoạn văn bản thành tổ hợp của các từ. Ví dụ đoạn văn bản trong tiếng Anh: “Hello World!” được tách thành chuỗi các từ [“Hello”, “World”, “!”]. Hay đoạn văn bản trong tiếng Việt: “Trăm năm trong cõi người ta” được tách thành chuỗi các từ [“Trăm”, “năm”, “trong”, “cõi”, “người”, “ta”]. Mỗi một từ ứng với một mã số nguyên. Khi lập trình thì đây là một dạng từ điển, có thể tra cứu hai chiều: cho một từ sẽ tìm được mã của từ đấy; cho một mã sẽ tìm ra được từ tương ứng. Các từ được tách ra thuộc bộ từ điển

Các từ được tách ra thuộc một bộ từ vựng nào đấy (Vocabulary – viết tắt là Vocab). Ví dụ: tiếng Anh thì Vocab khoảng hơn 1 triệu từ vựng; tiếng Việt: theo “Từ điển tiếng Việt” của Hoàng Phê (Viện Ngôn ngữ) khoảng 50 nghìn (thực tế trong sách báo con số này khoảng 80 nghìn). Nếu tính tất cả các ngôn ngữ trên thế giới thì Vocab của tất cả các ngôn ngữ có số lượng từ vựng khổng lồ!

Các vấn đề gặp phải với phương pháp mã hóa Word-level Tokenizer:

·       OOV (Out of Vocabulary – Không có trong từ vựng): Tình huống xảy ra ở pha inference của mô hình. Mô hình lúc này sẽ không xử lý được khi gặp một từ không nằm trong bộ từ điển lúc huấn luyện (training).

·       Kích cỡ Vocab quá lớn: Tốn nhiều bộ nhớ và kém hiệu quả tại hàm đầu ra softmax.

·       Khó tổng quát hóa: Các biến hình (metamorph) của từ (số nhiều, viết hoa/thường) cần được xử lý riêng biệt, dẫn đến kích cỡ Vocab tăng.

·       Kém linh hoạt khi xử lý đa ngôn ngữ: một số ngôn ngữ (như tiếng Trung, tiếng Nhật, tiếng Thái, tiếng Lào, tiếng Khmer) người ta có thể viết câu thành một mạch liền các từ, không có dấu cách. Trong trường hợp đó, thuật toán trên biến toàn bộ câu thành 1 từ.

-

. Character-level Tokenizer

Để khắc phục nhược điểm nói trên, một cách tự nhiên người ta nghĩ đến cách chia nhỏ đoạn văn bản thành chuỗi ký tự. Cách này có tên gọi là Character-level Tokenizer. Ví dụ đoạn văn bản trong tiếng Anh: “Hello World!” được tách thành chuỗi [‘H’,’e’, ‘l’, ‘l’, ‘o’, ‘ ‘, ‘W’, ‘o’, ‘r’, ‘l’, ‘d’, ‘!’]. Các ký tự được lấy từ bộ mã Unicode nên phủ hết tất cả các ngôn ngữ trên thế giới.

Character-level Tokenizer thường được sử dụng trong một số ngữ cảnh đặc biệt:

·       Xử lý các loại văn bản “không chính thức” như tiếng lóng, viết tắt – không tuân theo các qui tắc ngữ pháp, văn bản có nhiều lỗi chính tả, …

·       Xử lý các kho ngữ liệu của ngôn ngữ không thông dụng, các phương ngữ hiếm gặp, …

·       Nhận dạng ký tự (OCR), nhận dạng giọng nói (ASR). Các mô hình loại này thường chỉ cần dữ liệu đầu vào có dung lượng nhỏ, đối tượng xử lý là tập hợp các ký tự của ngôn ngữ tương ứng.

Tưởng chừng như cách mã hóa này khắc phục được các nhược điểm của Word-level Tokenizer. Tuy nhiên, không hẳn vậy. Có thể chỉ ra vài nhược điểm của giải pháp này:

·       Tổng số các ký tự của tất cả các ngôn ngữ trên thế giới, trong phiên bản Unicode 16.0 là 292,531 (nguồn) – gần 300 nghìn. Con số này – số từ vựng của Vocab – vẫn là lớn và kém hiệu quả trong xử lý đầu ra của mạng nơ-ron (NN).

·       Unicode là bộ mã liên tục phát triển, các ký tự mới liên tục được bổ sung. Vì vậy, một phiên bản cũ của Tokenizer có thể không nhận ra ký tự mới được Unicode bổ sung nên vẫn gặp vấn đề OOV (Out of Vocabulary – Không có trong từ vựng) khi mô hình được triển khai trong thực tế (inference).

-

. Byte-pair encoding

Byte-pair encoding (còn được gọi là BPE) là một thuật toán, được Philip Gage mô tả lần đầu tiên vào năm 1994 (nguồn), để mã hóa các chuỗi văn bản thành các chuỗi nhỏ hơn (một dạng nén dữ liệu).

Sau đây là một ví dụ ngắn (trên Wikipedia):

1.     Dữ liệu đầu vào để mã hóa: aaabdaaabac

2.     Vì cặp byte 'aa' xuất hiện nhiều nhất, chúng ta sẽ tạo một quy tắc gộp bằng cách thay thế tất cả các cặp này bằng một byte mới chưa có trong dữ liệu: Z = aa. Bây giờ, dữ liệu trở thành: ZabdZabac

3.     Lặp lại bước 2: tìm cặp xuất hiện thường xuyên nhất tiếp theo là 'ab', tạo quy tắc gộp: Y = ab. Giờ đây, dữ liệu là: ZYdZYac.

4.     Lặp lại một lần nữa với quy tắc mới (đệ quy): X = ZY. Và dữ liệu hiện tại là: XdXac.

5.     Không còn cặp nào xuất hiện nhiều hơn một lần trong dữ liệu. Vì vậy, chúng ta đã có phiên bản nén của dữ liệu: XdXac, và có thể giải mã lại dữ liệu ban đầu bằng ba quy tắc gộp:
X = ZY; Y = ab; Z = aa

Chú ý từ “Byte” ở đây có nghĩa là “Character” (ký tự) chứ không phải là byte vật lý gồm 8 bit.

Phân tích ví dụ trên chúng ta thấy:

Vocab ban đầu có 4 từ vựng (gồm ‘a’, ‘b’, ‘c’, d’). Sau mỗi lần thay thế, Vocab tăng thêm 1. Đối với các văn bản có dung lượng lên đến gigabyte hay terabyte thì Vocab có thể trở nên cực lớn – điều mà người ta không mong muốn. Vì vậy, trong thực tế người ta giới hạn kích cỡ của Vocab ở mức tối ưu nào đó. Tức là vòng lặp thay thế sẽ phải dừng lại khi không còn chỗ cho từ vựng mới.

Một cách tổng quát:

  1. Thay thế các cặp ký tự liền kề (c1c2) lặp nhiều lần nhất (n lần) bằng một ký tự mới (k1). Bằng thao tác này chúng ta giảm số ký tự của văn bản bằng số lần lặp (n). Lý do? Văn bản gốc có n cặp ký tự liền kề. Nghĩa là số ký tự của n cặp này là 2*n. Còn số ký tự sau khi được thay thế là n. Như vậy, số ký tự giảm xuống là (2*n)-n = n. Sau mỗi lần thay thế, người ta thêm vào một dòng trong “bảng tra cứu” dạng k1  c1c2. Mục đích của việc này là để giải mã sau này.
  2. Thuật toán lặp lại bước này cho đến khi không còn cặp ký tự liền kề nào lặp lại trong dãy văn bản hoặc không còn chỗ để tạo ra ký tự mới.

3.     Việc giải mã được thực hiện bằng vòng lặp đi từ đáy “bảng tra cứu” lên đầu bảng: thay thế các ký tự (kl) bằng các cặp (cicj).

 

Hạn chế của BPE?

  • Phải định nghĩa trước bảng ký tự.
  • Gặp khó khăn với các ký tự Unicode đặc biệt (emoji, dấu tiếng Việt, chữ Hán…).
  • Không tốt khi xử lý đa ngôn ngữ hoặc văn bản lạ.

-

Chú ý rằng Unicode có nhiều cách mã hóa như UTF-8, UTF-16, UTF-32, … Để tránh bị lạc đề, Unicode trong bài này đồng nghĩa với cách mã hóa UTF-8. (Để nói sâu hơn về Unicode chắc cần đến một bài post khác.)


Nguồn

“Ký tự” trong ngôn ngữ của Unicode được gọi là “code point”. Mỗi một ký tự mã hóa bằng UTF-8 có độ dài từ 1 đến 4 byte, tùy thuộc vào giá trị của code point (xem hình minh họa về chuyển đổi Code point ↔ UTF-8 ở trên). 128 ký tự có code point từ 0 đến 127 (ASCII) chỉ cần 1 byte để mã hóa. 1,920 ký tự tiếp theo cần 2 byte, 61,440 ký tự tiếp theo cần 3 byte và 1,048,576 cuối cùng cần 4 byte.

-

. BBPE (Byte-level Byte Pair Encoding) Tokenizer

Byte-level Byte Pair Encoding (BBPE) giống hệt BPE về thuật toán nén, chỉ khác về dữ liệu. Dữ liệu đầu vào của BBPE là byte “thô” (giá trị nhị phân), chứ không phải là ký tự.

Ví dụ: ký tự ‘é’ là 1 ký tự, nhưng trong mã hóa UTF-8 là 2 byte: 0xc3 0xa9.

Thuật toán BBPE rất đơn giản:

·       Chuyển đổi chuỗi ký tự gốc thành Unicode mã hóa UTF-8 (là chuỗi các byte thô).

·       Áp thuật toán BPE lên chuỗi đã mã hóa.

Lưu ý:

·       Vocab ban đầu của BBPE có kích cỡ là 256 (vì 1 byte có 2^8 = 256 giá trị khác nhau). Chú ý rằng Vocab lúc này có 256 “từ vựng”, các từ vựng này có mã từ 0 đến 255.

·       Mỗi lần áp thuật toán BPE thì Vocab tăng thêm 1 “từ vựng”.

·       Như vậy, mỗi lần dữ liệu được nén là một lần số “từ vựng” của Vocab có thể tăng lên 1. Rõ ràng là không thể để số từ vựng của Vocab tăng lên một cách không kiểm soát. Người ta phải tìm một điểm “trade-off” sao cho dữ liệu không dài quá mà số từ vựng của Vocab cũng không quá lớn.

Ý tưởng dùng thuật toán BBPE để biến chuỗi ký tự thành token có lẽ lần đầu được đề cập tại GPT-2,  mục “2.2. Input Representation” (trang 4). Vocab của GPT-2 có số từ vựng là 50,257. Nhìn vào size này của Vocab, chúng ta biết được rằng GPT-2 cho phép vòng lặp nén dữ liệu có thể lên đến 50 nghìn. Sau tối đa 50 nghìn lần, dù văn bản còn có thể nén thêm được nữa người ta cũng sẽ dừng lại.

(Vocab ban đầu có size là 256, cộng với một ký tự đặc biệt ‘<|endoftext|>’ là 257, số vị trí còn lại – 50,000 – là dành cho các “từ vựng” mới lập sau mỗi vòng nén dữ liệu.)

-

. Tiktokenizer

Tiktokenizer là phần mềm chạy trên Web cho phép chúng ta trải nghiệm biến đổi văn bản thành token của các chatbot thông dụng hiện nay: https://tiktokenizer.vercel.app/.


Một screenshot từ https://tiktokenizer.vercel.app/?model=gpt2

 

Sau khi kích hoạt phần mềm (chạy trên Web), ở phía góc phải trên, anh/chị có thể chọn Tokenizer – (mặc định ban đầu là gpt-4o - tên một chatbot của OpenAI). Chúng ta có thể chọn các Tokenizer khác bằng cách mở hộp thả và click vào tên của Tokenizer cần chọn.

Khi chúng ta đưa vào đoạn văn bản ở ô phía bên cột trái (phía dưới chữ Tiktokenizer) thì phần mềm cho kết quả mã hóa của đoạn văn bản này bên phía cột phải. Cột phải này có 3 ô:

·       Ô trên cùng có tên là Token count (đếm token) báo cho chúng ta biết số token mà mô hình chuyển đổi từ đoạn văn bản chúng ta vừa nhập vào.

·       Phía dưới ô Token count là đoạn văn bản mã hóa. Chú ý rằng các đoạn ký tự cùng một màu nền là tương ứng với 1 token – và token đó được liệt kê ở ô dưới.

·       Mỗi lần chúng ta di chuột (hover) lên đoạn văn bản cùng màu nền (ở ô giữa) thì chúng ta thấy chuỗi các “từ vựng” tương ứng được bôi nền cùng màu (selected) nằm ở ô dưới.

Ví dụ: Lấy trải nghiệm của tôi (xem screenshot minh họa ở trên) để anh/chị dễ theo dõi:

·       Tại hộp thả chọn các Tokenizer (cột phải) chọn gpt2

·       Ô dưới Tiktokenizer, nhập vào đoạn văn bản: Hello World! <|endoftext|>

·       Khi di chuột lên cụm ký tự ‘Hello’ (nền xanh), chúng ta thấy mã 15496 được bôi nền xanh (ở ô dưới)

·       Khi di chuột lên cụm ký tự ‘ World’ (kể cả dấu trắng ngay phía trước, nền vàng), chúng ta thấy mã 2159 được bôi nền vàng

·       Khi di chuột lên ký tự ‘!’ (nền xanh), chúng ta thấy mã 0 được bôi nền xanh

·       Khi di chuột lên ký tự dấu cách ‘ ’ (nền xanh), chúng ta thấy mã 220 được bôi nền xanh

·       Khi di chuột lên cụm ký tự ‘<|endoftext|>’ (nền vàng), chúng ta thấy mã 50256 được bôi nền vàng

Tương tự như vậy, anh/chị có thể trải nghiệm với Tokenizer cl100k_base (Tokenizer này được sử dụng cho ChatGPT) và các Tokenizer khác.

-

. Multimodal [image, video, audio] token?

ChatGPT và các chatbot khác khởi đầu với đầu vào là văn bản (text). Sau đó người ta đã tích hợp thêm các phương thức khác như ảnh, video, âm thanh. Hẳn nhiên, muốn xử lý được đầu vào thì dữ liệu của các phương thức đó cũng cần được mã hóa. Mã hóa như thế nào? Đây là vấn đề khá phức tạp, ở đây tôi chỉ đề cập một cách đại ý.

Phương thức chung là chuyển đổi các đầu vào phi văn bản (hình ảnh, video, âm thanh) thành biểu diễn nhúng (embedding) hoặc chuỗi giống như token để có thể xử lý được.

Hình ảnh

Cách tiếp cận phổ biến: tiền xử lý (huấn luyện trước) mô hình thị giác (vision model) (ví dụ: CLIP, ViT). Nghĩa là ảnh được xử lý riêng trước khi “nhúng” vào LLM:

·       [Ảnh] → [Vision model] → [embedding]

·       Căn chỉnh embedding của Vision model để tương thích với embedding của LLM (phép chiếu – project)

Video

Cách tiếp cận phổ biến: Trích xuất khung hình (frame), rồi mã hóa khung hình như ảnh tĩnh:

·       Trích xuất các khung hình chính (keyframes).

·       Mỗi khung hình được mã hóa như ảnh tĩnh.

·       Có thể thêm xử lý theo thời gian (như TimeSformer hoặc 3D ConvNet).

Âm thanh

·       Sóng âm → Phổ tần số → Bộ mã hóa thị giác:

o   Chuyển âm thanh sang phổ Mel (spectrogram).

o   Xử lý phổ này như ảnh → dùng bộ mã hóa ảnh.

·       Mô hình âm thanh trực tiếp:

o   Dùng mô hình như Whisper, Wav2Vec2.0, hoặc AudioMAE để mã hóa sóng âm thành embedding.

·       Token hóa rời rạc âm thanh:

o   Dùng Audio Tokenizer (ví dụ: EnCodec) để biến âm thanh thành token rời rạc.

-

. Context window

Context window (cửa sổ ngữ cảnh) trong LLM là số lượng tối đa token mà mô hình có thể “nhìn thấy” hoặc xử lý cùng lúc khi tạo sinh hoặc “hiểu” văn bản.

Điều đó có nghĩa là gì?

Context window xác định tổng số token mà mô hình có thể tiếp nhận trong một lần hội thoại (chat) — bao gồm cả đầu vào và các phản hồi trước đó của chính hội thoại đấy.

Take away:     Đối với mỗi chủ đề mới, khi sử dụng chatbot chúng ta nên tạo một chat mới. Đừng lười tạo chat mới vì nếu cứ dùng một chat cho hàng loạt câu truy vấn thì một cách vô tình chúng ta đã thu hẹp context window!

Tại sao nó quan trọng?

·       Ghi nhớ hội thoại:

o   Context window càng lớn, mô hình càng nhớ được nhiều thông tin (lịch sử hội thoại, lệnh, ngữ cảnh) trong cùng một phiên làm việc.

o   Nếu vượt quá giới hạn, các token cũ sẽ bị cắt bỏ.

·       Xử lý văn bản dài:

o   Context window lớn cho phép mô hình làm việc với tài liệu dài, mã lập trình hoặc cuộc hội thoại nhiều bước.

·       Tăng độ chính xác và mạch lạc:

o   Mô hình hoạt động hiệu quả hơn khi có đủ ngữ cảnh liên quan để suy luận hoặc trả lời chính xác.

Một cách hình ảnh

Hãy tưởng tượng context window giống như bộ nhớ RAM của mô hình:

·       Bộ nhớ nhỏ → chỉ nhớ được câu gần nhất.

·       Bộ nhớ lớn → nhớ được toàn bộ cuộc trò chuyện hoặc tài liệu dài.

Ví dụ về context window

Mô hình

Kích thước context window (Số từ tương đương - ước tính)

GPT-2

 1.024 token (~750 từ)

GPT-3

 2.048 token (~1.500 từ)

GPT-3.5 Turbo

 4.096 hoặc 16.000 token (~3.000–12.000 từ)

GPT-4 Turbo

 128.000 token (~96.000 từ)

Claude 3, 4

 200.000 token (~150.000 từ)

Gemini 2.5 Pro

 1 triệu token (~750.000 từ)

Grok 3

 128.000 token (~96.000 từ)

Grok 4

 256.000 token (~190.000 từ)

DeepSeek V3

 128.000 token (~96.000 từ)

Qwen3

 32.768 token (~14.000 từ)

Llama 4 Scout

 10 triệu token (~7.500.000 từ)

-

 🤔. Suy ngẫm chậm.

Gần đây, người ta nói nhiều đến một “ẩn dụ” (metaphor) có tên “AI Factory” (Nhà máy AI):

·       Đầu vào: Dữ liệu (ví dụ: văn bản, hình ảnh, video, âm thanh)

·       Xử lý: Huấn luyện mô hình, tinh chỉnh, suy luận (inference)

·       Đầu ra: Dự đoán, phân loại, quyết định, nội dung, ...

Theo cách hiểu này, "AI Factory" là việc tự động hóa và công nghiệp hóa vòng đời phát triển AI — từ thu thập dữ liệu đến triển khai và giám sát mô hình.

Nếu nhìn vào bên trong nhà máy AI, chúng ta sẽ thấy gì? Toàn bộ hoạt động của nhà máy này là nhào nặn, biến đổi, xử lý các token!

«chuỗi token» NN «chuỗi token»

-

Trân trọng & vui nhã


 






(credit: Gemini 2.5 Flash)

LeVanLoi

☕ Nhàn đàm S&T: Humanoid Robots 🤖

Phác họa bài post: Đề dẫn. ❶. Humanoid Robots hoạt động thế nào? ❷. Lắp ghép một Humanoid Robot như thế nào? ❸. Huấn luyện Humano...