Thứ Ba, tháng 8 31, 2021

Họ hàng nhà "NGHỆ"? CÔNG NGHỆ với NGHỆ THUẬT.

Chia sẻ ngày 3.9, vẫn là dịp nghỉ lễ quốc khánh - Nhân món quà "anh bạn thân" tặng tinh thần độc lập bất diệt.

Cá nhân mình thấy trong cuộc sống, nếu chỉ công nghệ vị công nghệ hay công nghệ vị kiếm tiền thì cũng không hẳn lúc nào cũng thú vị. Thế nên đôi lúc, tôi suy nghĩ dân công nghệ có thể vị nghệ thuật được không?

Trước hết, thay vì làm được đồng nào mua đất cát, đầu tư hết thì tôi dành ra một chút để đi tìm bắt "con" nghệ thuật. Chỉ là chút xíu thôi. Thấm thoát cũng phải được 20 năm kể từ khi bỏ những đồng tiền chắt chiu đầu tiên để nuôi dưỡng một tâm hồn nghệ thuật bằng những dòng code lập trình dạo.

Công việc yêu cầu di chuyển nhiều nơi trên thế giới nên đến đâu công tác thì tôi cũng dành chút thời gian xem các viện bảo tàng nghệ thuật tranh ảnh hay âm nhạc. Thời kỳ sống ở UK và Nhật bản thì có thú vui cuối tuần vào bảo tàng và ngồi ngắm, tĩnh lặng, suy nghĩ và quan sát được nhiều điều thú vị. Thú thực là không hiểu lắm đâu nhưng  thấy sướng, kiểu thanh bình nhưng lại "vắt tê óc" để hình dung, mường tượng bao điều từ những bức tranh của các danh hoạ, họa sỹ già - trẻ gửi gắm qua nét vẽ. Những hình ảnh, suy nghĩ, thậm chí gợi lại bối cảnh một thời kỳ lịch sử nhân loại đã qua dưới lăng kính họa sỹ, tạo cảm giác rất phê như kiểu bị tăng hoóc môn dopamine ấy.

Mỗi năm dành dụm tiền dư mua chút chút khoảng 1 - 2 bức, nên đến giờ cũng có đến gần trăm bức. Trước thì tôi mang lên văn phòng công ty cho rộng rãi treo khắp nơi. Nhưng rồi có đợt biến cố số tranh giảm hẳn chỉ còn phân nửa thì lại mang về nhà treo lên một phần, còn đâu sắp xếp gọn vào 1 góc nhà.

2 năm Covid-19 nhiều khó khăn hơn. Tuy nhiên, tình yêu nghệ thuật vẫn còn, và mỗi con đường phấn đấu biz như chốt một khách hàng mới, ký kết một dự án to, đủ duy trì công việc hay trả lương nhân viên đầy đủ trong bối cảnh muôn vàn khó khăn thì tôi lại tự nghĩ cho mình một phần thưởng nho nhỏ. Thường thì sẽ là một bức tranh mà tình cờ tôi thích hoặc theo dõi mong đợi từ nhiều năm trước. Đến giờ mới là dịp để tưởng thưởng cho chính mình.

Cứ thế, tôi vẫn duy trì mỗi năm cố gắng túc tắc tìm 1 - 2 bức mình yêu thích, tiết kiệm chút tiền để mua. Cũng không nhiều nhặn gì, đôi khi chỉ là thay vì lên đời 1 cái iPhone mới ra mỗi 18 tháng thì tiếp tục trung thành dùng điện thoại tàu cũ Xiaomi ít nhất 3 năm liền (hãng Tàu mà mình rất ngưỡng mộ sản phẩm IoT của họ) là có được 1 bức tranh đẹp ngắm cả đời.

Đấy, năm 2021, từ đầu năm tính đến giờ bị vượt khung, sưu tập thêm được 5 tác phẩm rồi ấy. Chỉ vì chữ "duyên"!
Nhà chật hết chỗ treo roài, tranh thì phải treo lên mới ngắm được chứ xếp xó mãi không ổn.  À, lần đầu tiên năm nay nữa là sưu tầm và sở hữu được một bản nhạc dân ca chuyển soạn cho nhạc cổ điển rất giá trị. Mới mẻ, thú vị độc đáo và có vẻ sẽ không chiếm nhiều diện tích nhà ở như tranh :D

Còn #WFH và lockdown suốt thế này, chắc thời gian tới sẽ ngâm cứu #NFT. Trong một diễn đàn kín, thấy giám đốc Binance VN họp online chia sẻ là #NFT giúp chủ sở hữu thế hệ gen Z ngắm trên điện thoại mà không phải có tường để treo tranh và tiện khi di chuyển nơi ở mới??!?!!
Vậy có cao thủ NFT hay kiểu cryptopunks nào thì kết nối và chỉ giáo với nhé. Vẫn chưa cảm được cái lý "tiện dụng" trên lắm. Ngồi thừ mình ra ngắm tranh là một cảm xúc khác với xem một bộ phim trên điện thoại di động mà.

Bức tranh đặc cách "khoe" kiểu này đầu tiên lên đây hôm nay là của một họa sỹ trẻ tôi yêu quý về sự say mê theo đuổi nghề nghiệp và trau dồi kỹ thuật của em. Biết em qua facebook từ 2018 và có được 4 bức từ em, tôi cho là một chữ "duyên". Rất mong em sớm thành công và thật vinh dự được sưu tập tranh của em.

Bức tranh em chọn chủ đề là Meals (Bữa ăn). Bức tranh trong  series "Sinh tồn" sáng tác năm 2016. Tôi thì thấy "cảm" với ý đó và muốn để cái tên riêng "Bữa ăn cuối cùng của muông thú" gần với Tây kiểu the Last Supper ý. Rất nhiều hàm ý cho thế giới của con trẻ trong tương lai phải không?

#artwork #artlover #earthfocus

Chủ Nhật, tháng 8 22, 2021

"Hà Tây quê lụa" - Đỗ Tố Hoa

Tròn hai tuần trước, tôi có nói về niềm vinh dự được giới thiệu 1 album nhạc số "Nhà em ở lưng đồi" của một nghệ sỹ trẻ xinh đẹp với giọng sơn ca mà nghe rồi là bị "ám ảnh" về một thời niên thiếu.
Hôm đó, mình cũng có hứa một ngày kể về 1 bài hát khác nằm trong album đó. Nếu đăt ra mà chọn, tôi sẽ chọn bài này như là bài hát dâng trào cảm xúc, trong trẻo nhưng với những gì điêu luyện nhất của cô bé sơn ca thính phòng ấy.

"Hà Tây quê lụa"

Những tưởng khơi ra để đó, 2 tuần hết lockdown rồi đi làm và lờ lờ đi lâu lâu mới quay lại. Ai dè, lại tiếp tục làm ở nhà #WFH nên có cơ hội cứ vừa làm vừa nghe vô thức album này.
Nghe bài này cứ nhớ cảnh trước thời kỳ đổi mới, những năm 82 - 86, mình thì bé tý và tối lại rất hay mất điện. Bố mẹ mình có cái đầu cassette nhỏ loa liền, giống 2 cái bánh chưng để nằm bẹt cạnh nhau, cũng chẳng nhớ hiệu gì hay để đầu giường. Và ở đó là cả một thế giới rộng lớn từ kể chuyện đêm khuya, đài tiếng nói Việt Nam,đài tàu truyện chưởng, các bản tình ca nhạc đỏ, các bản bolero nhạc vàng,vv.

Đó hẳn cả một thế giới mà bố mình mang về cho cả nhà.

Kể ra mà nói, cụ nhà mình khá tân tiến, rèn con kỹ nổi tiếng, roi đét đít đủ cả nhưng cũng hay tỉ mỉ chơi với con như là 1 anh bạn lớn, làm đồ chơi, trò chuyện, kể chuyện, hát hò đủ thứ cả.
Có những hôm mất điện, cả nhà lên 1 cái giường nhưng nghêu ngao cả tiếng trước khi đi ngủ.

Hà nội hồi đó, cũng vắng như Hà Nội covid những ngày này vậy.

Trong vô số những ca khúc trong bóng tối của mất điện đó, bài "Hà Tây quê lụa" là một trong những bài hát được cụ nhà mình yêu thích, nghe đi nghe lại cũng như đôi khi cất giọng ngân nga.
Có thể một phần là quê bà, nơi cả nhà cũng hay về thăm, mà cũng có thể là lời bài hát truyền cảm hứng với quá nhiều hình ảnh thân quen trong bài hát.

Bóng chiếc thoi đưa ánh mắt long lanh
Trời đất Hà Tây tay em dệt lụa
Sữa trắng Ba Vì, thóc vàng khu Cháy
Hồn thơ Nguyễn Trãi dệt thành vần
Sông Tích sông Đà giăng lụa mênh mông
Đan Phượng ơi! Quê hương người gái đảm
Đồng hợp tác xanh tươi cấy cầy thẳng tắp
Anh phi công bàng hoàng ngỡ mình bay trên gấm vóc

Hà Tây ! Cửa ngõ Thủ Đô!
Áo giáp chở che ngàn năm bền vững
Ngăn bầy giặc Mỹ vẩn đục bầu trời
Hà Tây ! Vọng gác Thủ Đô!
Cô gái Suối Hai chàng trai Cầu Giẽ
Giữ lấy màu xanh biếc cho tấm lụa thanh thiên
Hà Tây...

Bẵng đi, lớn lên, công việc cuốn mình đi rồi trôi dạt lang thang nước ngoài, mình quên hết, chả nghĩ gì. Nếu có, hẳn là chôn rất sâu trong ký ức tuổi thơ.
Thật bất ngờ, được nghe cô sơn ca Đỗ Tố Hoa hát thì cảm giác như ngày đó tràn về. Những hình ảnh tối mất điện, những trò chơi hồi bé, những cái băng cassette xin xỉn bẩn bẩn với chữ bút dạ lục tục kéo về trong trí nhớ.
Hồi đó cụ nhà mình cũng chỉ tầm tuổi mình bây giờ. Còn giờ thì cụ đã tám chục, và cũng về nghỉ dưỡng sống cùng núi rừng, sông suối Hà Tây ... và  đúng là có nhiều sữa trắng Ba Vì thật.

Phiên bản thời đó mấy bố con hay được nghe là của NSND Quốc Hương:


Còn phiên bản lôi cả một bồ ký ức của mình đợt WFH này đây:


#3smedia

Chủ Nhật, tháng 8 08, 2021

Nhà em ở lưng đồi - Đỗ Tố Hoa

 Đây là một vinh dự. Tôi thề.

Sau phim ảnh thì muốn giới thiệu với mọi người về âm nhạc thời kỳ giãn cách số 2 HN, một "cô" chim sơn ca núi rừng Tuyên Quang Tây Bắc. Ca sỹ dòng nhạc thính phòng Đỗ Tố Hoa.

Thú thật thông tin về Hoa thì nhiều lắm, cứ lên Google là ra hết ngay. 

Nhưng phải khoe! Duyên may cho tôi được gặp Hoa trong một bữa trưa cơm chay 100% giữa Hà Nội khi chưa bị lockdown, nhưng cũng chớm khắc khoải ngóng tin dịch dã các nơi tràn về.

Đấy mở màn thế để biết là không phải thấy người ta hát hay nổi tiếng rồi theo bú fame đâu nhé.

Giọng ca trong vắt, vang xa, va vào vách đá, xào xạc ngọn cây, lay động  và "ám ảnh" như những phim liêu trai hay phim chưởng dài tập của Trung Quốc tôi và lũ bạn trong xóm hay xem thời thơ ấu oanh liệt. Kiểu như hùa đi xem Tây Du Ký Tôn Ngộ Không truyền kỳ khi nhạc hiệu phim vang lên mỗi tối tại khu phố nhỏ xưa. Phải nói là "ám ảnh" chứ không phải chỉ "giọng hát gây thương nhớ" như ông bạn MC điển trai đa tài Anh Le Trinh  hay nhắc tới.

Khi đạt giải nhất Sao mai dòng nhạc thính phòng năm 2017 cùng với giải thí sinh được yêu thích nhất kèm giải Ngôi sao hy vọng, cô gái xứ Tuyên Quang tiếp tục không ngừng nghỉ trên những chặng đường chinh phục khán giả trong và ngoài nước.

Gặp lại Hoa qua livestream trong một chương trình hòa nhạc Online lan tỏa năng lượng tích cực vượt qua mùa dịch của đại diện âm nhạc Rumani tại Việt Nam, nghệ sỹ Cello Đinh Hoài Xuân  tổ chức tối qua, vẫn thấy một cô chim sơn ca nhí nhảnh, vui tươi và ngập tràn năng lượng tích cực như thế.

"Nhà em ở lưng đồi" vốn chỉ dành cho những phút giây tĩnh lặng, giữa núi rừng Tây Bắc ngút ngàn, giờ lại hợp hơn trong phố chợ mùa lockdown, vắng hoe yên ả và cũng cao vút những tòa nhà chọc trời.


Ở thời kỳ VUCA & TUNA, cái gì cũng có thể, không gian thưởng thức âm nhạc cũng thế.

Giờ, giọng sơn ca ấy đang từng bước tiên phong trong chuyển đổi số của các ca sỹ thính phòng Việt Nam, lên kệ ở 28 kho nhạc số như Spotify, Apple Music, Amazon, Youtube, Tidal, qObuz, Yandex, vv, góp giá trị rất riêng vào "môi trường âm nhạc" quốc tế, như một bước đi tự khẳng định vị thế của mình rộng lớn ngoài kia.

 "Theo giới chuyên môn đánh giá, Tố Hoa sở hữu giọng hát soprano (nữ cao), âm sắc đẹp, sang trọng, làm chủ hơi thở, thể hiện tốt các phần legato (khoan thai) và staccato (sự ngắt âm) cùng phong thái trình diễn duyên dáng, hấp dẫn" nên cô chim sơn ca này cần một bầu trời, một vùng đất xanh và rộng lớn hơn rất nhiều. Là World Music Stage chứ còn gì.

Nói đến đây, lên Spotify tìm và mở nghe album số đầu tay của Hoa, đồng thời biết rằng em từng đạt giải nhì hát tiếng Pháp khi 17 tuổi, giải nhất tiếng hát Việt - Trung năm 22 tuổi và nhiều giải thưởng quốc tế thì tôi nhận ra rằng, tố chất một nghệ sỹ quốc tế đã có sẵn trong em.

Mong rằng sớm có dịp kết nối đưa những album tiếng Pháp, tiếng Trung yêu thích của Hoa trong tương lai đến ngay được với bạn bè thế giới.

Chúc mừng Đỗ Tố Hoa. Chúc mừng một nữ nghệ sỹ quốc tế.

Đây là 1 album số đầu tay gồm 6 bài tuyệt hay của cô. Track "Nhà em ở lưng đồi" thì đã quá rõ rồi nhưng cá nhân tôi lại có cả một bầu trới ký ức cùng bố và mẹ trong căn gác tý xíu thời bao cấp với bài "Hà Tây Quê Lụa" nữa ấy. Nhưng đó là để 1 dịp khác tâm sự nhé.

 Đỗ Tố Hoa - Spotify Music

PS: Nhà em ở lưng đồi nào thế Hoa ơi? Có gần Hà Nội không hì?😁🥰

Thứ Bảy, tháng 8 07, 2021

Ta về - Thu Phương Xẩm

 Một nghệ sỹ yêu nghề và theo đuổi với Xẩm dù bao nhọc nhằn.

Cảm phục với đam mê Xẩm và giọng hát trầm, dày và khàn của Phương. Tôi quyết tâm mang Xẩm Việt Nam ra thế giới.

Những bước đầu chập chững đầy khó khăn, để mang lại thành công cho nghệ sỹ cũng còn một chặng đường đầu tư dài trước mắt nhưng chúng tôi tin rằng cứ đi khắc đến.

"Ta Về" là một album Xẩm tân nhạc đầu tiên của Thu Phương phát hành lên 28 kho nhạc quốc tế như spotify, apple music, amazon music, tidal, shazam ... cùng lúc đến được bạn bè nghe nhạc quốc tế trên 240 quốc gia.

Mọi người vào nghe và chiêm ngẫm những câu từ mộc mạc, chân phương miền quê Bắc Bộ. Cũng như "chất" của người nghệ sỹ xứ Quảng Ninh này.

------------

Chứ ngày còn duyên cô em đóng cửa kén chồng,

Hết duyên cô em đứng chổng mông mà gào...

------------

Ta Về - Thu Phương Xẩm on Spotify

Chủ Nhật, tháng 7 14, 2019

PXU 2019 Commencement (Graduation)

Xin kính chào các thầy cô giáo, khách mời, quý vị phụ huynh và các em sinh viên.
Lần đầu được mời phát biểu nhân ngày tốt nghiệp ở trường đại học nên tôi thấy lo ngay ngáy.
Mà tôi nghĩ ai cũng vậy khi muốn phát biểu gì trước toàn thể các bạn sinh viên nếu muốn gây ấn tượng hay ho, độc đáo.  Từng là sinh viên nên cũng hiểu được sau hôm nay các em cũng chẳng bận tâm lắm đâu.
Với ngày ra trường hôm nay, các em có thể tự hào mình vừa bước qua một cánh cửa tri thức lớn, quan trọng đầu tiên. Ra trường, sẵn sàng lăn xả vào cuộc sống công việc để tiếp nhận những trải nghiệm mới.
Nhưng, cá nhân tôi thấy, học xong đại học thì không có nghĩa chúng ta không còn phải học tập nữa. Hoặc giả, suy nghĩ rằng việc học tập sau đại học chỉ dành cho những ai theo đuổi lên cao học, nghiên cứu sinh, tiến sỹ, giáo sư hay các học hàm nghiên cứu cao hơn.
Thực chất, bước ra cổng trường đại học, chúng ta cũng chỉ bắt đầu một cánh cổng học tập mới.
Học tập là suốt đời. Ở công ty 3S chúng tôi, chúng tôi gọi là 3L: Life Long Learning. 3S là một công ty công nghệ, xuất thân từ lập trình xuất khẩu phần mềm cho thị trường Nhật, vẫn luôn tiếp tục trân trọng duy trì và phát triển công việc tạo nguồn thu ngoại tệ mạnh này làm nền tảng cơ bản cho công ty. Cùng với đó, 3S ngay từ những ngày đầu tiên cũng đã đẩy mạnh hoạt động Nghiên Cứu & Phát Triển để góp phần tạo ra những giá trị sản phẩm CNTT chất lượng cao với chi phí hợp lý cho xã hội Việt Nam nói riêng và cạnh tranh sòng phẳng trên toàn cầu nói chung. Mỗi đồng Yên hay Dollar với 3S ở đây không đơn giản tiền tệ mạnh toàn cầu mà kèm theo mặt bên kia của đồng tiền là biết bao nhiêu học vấn và kiến thức thể hiện qua công việc R&D, AI, IoT, cũng như giải pháp dịch vụ phần mềm sáng tạo.
Đi làm phải là một phần của quá trình học tập liên tục. Công ty là một tổ chức học tập (learning organization)
Ngày nay, nhanh nhiều khi có nghĩa là giỏi và thành công. Điều này không sai.
Nhưng tôi xin đươc chia sẻ với các em một triết lý của Nhật mà tôi thấy tâm đắc : "Nhanh nghĩa là đi chậm mà không bị ngắt quãng!"
Việc này đúng cho cả việc học. Tốt nghiệp đại học, đi làm, không cho phép chúng ta ngắt quãng việc học tập.
Ngày hôm nay, các em sẽ rời khỏi ghế nhà trường đại học. Các em có thể bước đến một văn phòng máy lạnh, một công xưởng ồn ã, đặt chân lên một chuyến xe bus tour du lịch, bước vào một khu quản lý một khách sạn đẳng cấp, vv.
Nhưng xin chúc các em sẽ luôn giữ lửa tiếp tục tinh thần học tập suốt đời để mạnh mẽ hơn, để giàu tri thức hơn và để bước nhanh hơn trên con đường tìm kiếm sự thành công của chính mình.
Xin chân thành cám ơn.
Quên mất, dù học là việc cả đời thì chắc chắn tốt nghiệp đại học hôm nay là 1 sự kiện đáng nhớ và rất đáng để ăn mừng với bạn bè, thầy cô và gia đình lắm.

Thứ Bảy, tháng 7 13, 2019

3S Hue Grand Opening Speech

Xin kính chào các anh lãnh đạo tỉnh, thầy cô giáo ĐH Phú Xuân, quí vị khách mời, đối tác và các đồng nghiệp 3S,

Chân thành cám ơn các anh trong lãnh đạo tỉnh ủng hộ sâu sát ngay từ ngày đầu 3S chân ướt chân ráo đến với Huế.
Cám ơn anh Minh hiệu trưởng Phú Xuân đã vô cùng nhiệt huyết se duyên cho 3S với Huế thân thương này.
Xin được gửi lời chào trân trọng đến các vị khách hàng, đối tác thân thiết từ Nhật, Mỹ và cả trong nước đã dành thời gian đến với ngày thành lập công ty trách  nhiệm hữu hạn phềm mềm quốc tế 3S Huế hôm nay.

3S là một công ty công nghệ, xuất thân từ xuất khẩu phần mềm cho thị trường Nhật, vẫn luôn tiếp tục trân trọng duy trì và không ngừng phát triển công việc tạo nguồn thu ngoại tệ mạnh làm nền tảng cơ bản cho công ty. Cùng với đó, 3S ngay từ những ngày đầu tiên cũng đã đẩy mạnh hoạt động Nghiên Cứu & Phát Triển để góp phần tạo ra những sản phẩm CNTT chất lượng cao với chi phí hợp lý cho xã hội Việt Nam nói riêng và cạnh tranh sòng phẳng trên toàn cầu nói chung. Mỗi đồng Yên hay Dollar với 3S ở đây không đơn giản tiền tệ mạnh toàn cầu mà kèm theo biết bao nhiêu học vấn, kiến thức và cơ hội quốc tế hoá. Công việc nghiên cứu và phát triển R&D, trí tuệ nhân tạo AI, kết nối vạn vật IoT, cũng như giải pháp dịch vụ phần mềm sáng tạo thì đơn giản chính là mặt còn lại của từng đồng xu gia công phần mềm.

Ở 3S, đạo đức, trí tuệ và năng lực người kỹ sư là quan trọng nhất, luôn nhận sự đầu tư lớn nhất từ công ty. Vì vậy, 3S cho rằng cần phải chú tâm cho việc tuyển chọn nhân lực, tập trung đào tạo ngay từ khi mới vào công ty, thậm chí tốt hơn nữa là cả trước khi vào công ty.
Là chỗ quen biết từ lâu, cá nhân tôi cũng rất cảm phục những thành công trong kinh nghiệm quản lý giáo dục và đào tạo của hiệu trưởng Đàm Quang Minh, nhân dịp này, công ty 3S bày tỏ sự cám ơn trân trọng vì có cơ hội được hợp tác cùng với đại học Phú Xuân để xây dựng một mô hình phát triển công nghệ thông tin kiểu mới, trong đó sự gắn kết chặt chẽ giữa đào tạo cao đẳng, đại học, chuyển đổi nghề đồng hành cùng doanh nghiệp công nghệ thông tin để góp phần phát triển kinh tế, xã hội tại địa phương.

Hy vọng, những lập trình viên trẻ, những người con đất Huế đến với 3S Huế sẽ sớm trau dồi phẩm chất và năng lực để sáng tạo các sản phẩm, dịch vụ phần mềm chất lượng cao cho xã hội, cùng nhau tạo dựng nhiều cơ hội để ngày càng trải nghiệm thực tế trên quy mô toàn cầu, phát triển sự nghiệp cá nhân cũng như góp thêm phần xây dựng chính mảnh đất quê hương Huế thân thương.

Đã đến lúc bắt tay vào làm thôi! :D

Xin cám ơn quý vị!

Chủ Nhật, tháng 3 24, 2019

Chiếc vé đi tuổi thơ... Hà Nội những năm 198x

 Tuổi thơ tôi là một nông trại động vật giữa thành phố lớn... 
+ Một chú ba ba cảnh cậu bắt được khi đi đánh vó hồ Giảng Võ mang cho, nuôi nước lập lờ với bụng khoang da cam đen trắng rất đẹp, sáng nào cũng mang phơi nắng...

 + Là một bể cá rộng 15 x cao 15 x dài 45cm với đủ cá mây triều, tử long, thiết giáp, etc. Nhiều buổi chiều lặn lội khe cống, đầm rau, đãi trùn chỉ, hay lúc nắng lên đi vợt hồng trần. Rồi thần tiên, tai tượng, ngạnh sông (cá mập nc ngọt...) khoe dáng trên lề cửa sổ. 

+ Là ống xi lanh truyền huyết thanh xong và cái bơm xe đạp kéo lên rồi thả trôi xuống từ từ làm sủi khí... 

+ Là mấy lọ chọi hồng chọi xanh om tối gầm tủ đứng. 

+ Là chú chó Mực đầu tay nuôi mất vì đau bụng, đi chôn tối muộn, khóc tu tu cả đêm. Là bạn chó Ky hiền lành to xác. Là 3 bạn chó dũng mãnh sau đó với 2 chú mèo chung sống hạnh phúc bên nhau. Chú Merki lài lửa mua ngày bạch hổ, 2 anh em ding-gô dì dưới quê mang lên cho cháu nuôi, chạy toong toong như ngựa. Mướp và Tam thể nhận từ ông bà Tâm cùng quê cha, hàng xóm về nuôi, ngày rét trèo lên  bụng ding-gô ngủ cho ấm, lớn lên chuyên đi hoang lâu lâu lại về cào cửa. Có lần bị đánh lê lết, chăm sóc mấy tháng với cái bụng bị người ác đá cho sưng to như quả ổi lê. 

+ Là chú gà trụi lông mỗi chiều học bài xong được dắt đi chơi từ tầng 3 xuống sân. + Là chú lợn ủn ỉn làm kinh tế gia đình, người cùng lợn tắm mát sau buổi chơi chạy đẩy vòng tướt tát mồ hôi... 

+ Là mấy chú kiến càng đầu đen bóng nhẫy mang đi đấu cắn gãy răng càng hay đứt bụng... 

+ Là những chú én chăm chăm đợi mình  đi đập nhặng và ruồi để theo ăn. 

+ Là mấy cặp châu chấu voi ăn lá tre, lá cỏ tranh rào rào bố bắt đem về từ trại an dưỡng Quảng Bá, Tây Hồ. 

+ Là chú vẹt rừng xanh mỏ đỏ to đoành tên  Pol tập toẹ nói ngọng ăn chuối rất tài, trèo song cửa thì rất giỏi. 

+ Là lồng vẹt nhí Hongkong, ăn kê tanh tách, mai mực treo nghiêng mài mỏ. + Là chú rùa đất lâu lâu bò từ gầm tủ ra ăn rau, ăn trực bữa ăn mâm đồng. 

Cả thế giới thu nhỏ vẻn vẹn trong cái ban công dài 4m  rộng 1.2m ở căn hộ chung cư tập thể 12m2 công ty phân cho bố ra Hà Nội. Với một đứa trẻ đó là tất cả bạn bè cùng nhà bên những hòm xiểng, vali, giá sách trong khi bố mẹ đi làm từ sớm đến khuya. 

Giờ mới thấy thật may mắn vì được bố mẹ cho phép sống ở một thế giới như vậy. Cám ơn bố mẹ nhiều lắm. Thấy trẻ con phố chợ ngày nay thiệt thòi nhiều là do bố mẹ ấy chứ. 

Tự thấy đôi khi lớn lên, ta khó để yêu thương mọi người đủ như khi bé ta vẫn hằng chăm chút những người bạn nhỏ bé quanh ta. Tất cả như một thước phim flashback sweet memories. Thank you #3SRadio & #3SRadioTeam. 

Thứ Ba, tháng 10 02, 2018

Phan Hầm Mỏ - Stumbling on Happiness!

Em có từng tình cờ “ngã” dúi dụi vào cái người ta vẫn thường gọi là hạnh phúc chưa? Hạnh phúc là sao em định nghĩa được không?

Khi lẻ loi, tôi càng đọc ngấu nghiến nhiều trang sách tâm lý học, tâm thần học và tâm tư học nữa:D 
Tôi biết rõ quá khứ, không như những dòng code tôi vẫn viết, nó không thể nào thay đổi được. Quá khứ mãi luôn ở lại với một phần cuộc sống mà tôi cùng em đã từng đi qua với bao cung bậc: Âm thầm - lắng đọng - vụn vỡ - đứt quãng rồi lại trào dâng - hoà quyện - gắn kết.

Thu Hà Nội lúc nào cũng dịu dàng với tôi dù có em hay không, em vẫn biết chứ? 
Rảo bước ra về, mải miết con đường khuya hoa sữa tháng chín thơm lừng từng góc phố vương tiếng chân buồn, em còn nhớ? Lướt vội mỗi sáng đến nơi làm, có những xe đẩy đầy cúc vàng, như gom góp nốt chút nắng sớm cuối thu, bung lụa chờ đông tới đấy à???
Hạnh phúc chạy đâu rồi? Em có thấy không?

Gió thu trên đường Hà Nội chật chội nên chẳng tránh được ai, se sẽ luồn vào làn áo khoác mỏng mặc vội vàng qua vai, không cài cúc. Gió mang hương thu, chẳng hỏi han gì, cứ ùa đến với người độc hành, để lại chút lạnh vương vấn nơi lồng ngực rồi ra đi. Lúc ấy, bản thân gió cũng không nhớ gì về nơi gió chạm đến cũng như gió có bao giờ vòng tay ôm trọn nỗi nhớ đâu em?

Ai cũng bảo rồi sẽ có lúc quá khứ được gói gọn lại thành một kỷ niệm, phẳng phiu, bình dị thì bị bỏ ra ngoài, còn đa phần gồm những vết cứa, một số vết cứa thì để lại sẹo, thoạt ngoài tưởng như đã lành lặn nhưng bên trong có nhẽ chẳng bao giờ nguyên sơ được nữa . Quá khứ gói ghém nỗi đau thì hiện tại hẳn là một thứ hạnh phúc, phải không em?
Rồi vết sẹo xưa cũ ấy, sẽ có đêm thức trắng (như đêm nay) đau thốn tim khi giao mùa, kiểu như khi ai đó vô tình chạm phải quá khứ ấy. Chẳng hiểu từ bao giờ, khi quá lẻ loi hay quá ồn ã, tôi cũng bất giác giật mình thấy mang mác về một nỗi đau. Khuya càng vắng lặng thì nỗi đau ấy mang kỷ niệm ùa về càng sâu sắc hơn bao giờ hết rồi chuyển hoá thành sự an ủi duy nhất tự thân. Có một thứ hạnh phúc khi mình tự an ủi mình được, phải không em?

Ai cũng bảo, yêu, đó là điều hạnh phúc nhất. Kể cả lúc chia xa khi không còn có thể về bên nhau, trong tim vẫn có một nỗi nhớ dịu vợi về một ai đó đã thoáng qua trong đời. Có nhẽ đã đến lúc tôi phải bắt đầu một con đường không có ai đó chung bước, để rồi vẫn thấy hạnh phúc về bên nỗi nhớ rời xa. 
Nhiêu đó đủ định nghĩa cái người ta vẫn thường gọi là hạnh phúc chưa em? Có một thứ hạnh phúc khi có thể buông tay. 
Buông bỏ là hạnh phúc, phải không em?

If there was any doubt
I thought we would work it out

But now you're suddenly like a stranger
And you're leaving our love behind
Of all the things I was ever planning for
This was the last thing on my mind. 
                       (STEPS - Last thing on my mind)



Thứ Tư, tháng 4 18, 2018

I WON'T GIVE UP

Có những ngày tháng tuổi trẻ trôi qua thật nhanh như tia chớp khiến con người ta quay cuồng cuốn theo những quyết định bất chợt đến và bất chợt đi trong đời mình.
Tuy nhiên, điều tuyệt vời nhất trong cuộc đời là đến lúc có thể biết được rằng mình sống để làm gì? Nhưng vượt trên hết, cần một khí phách để có thể kiên trì và kiên định để đi tới cùng con đường mình đã lựa chọn. 
Rồi một ngày, bạn thấy nếu như hiểu được rằng mọi việc trong cuộc sống không thể mãi tính tính toán toán mà giải được, bởi vì làm gì có ai có thể biết hết trước được tường tận điều gì. Trải qua những ngày tháng quay cuồng trong công việc hiện tại, tôi chợt lắng lòng thấy có quá nhiều thứ phải lo lắng cho vẹn toàn trong một tương lai nhiều thách thức và bất định. Lòng người khó dò được thâm sâu, công việc thì không thể ngày một ngày hai mà cho xong được. Cho nên, tôi sẽ chỉ một mực kiên định hết mình hướng tới sự tử tế, tin rằng bền gan vững chí thì sẽ vượt qua mọi khó khăn trở ngại. Tôi sẽ không cố chấp vào những tính toán ấy để khi gặp hoàn cảnh không thuận lợi thì bị suy sụp mà dừng lại, mà ngã xuống. Thật may còn nhiều người bạn quanh tôi đồng lòng và luôn tiếp thêm sức mạnh, là động lực và cũng là nguồn cảm hứng để bước tiếp con đường chúng tôi đã quyết chọn và dấn thân vào. 

I won't give up on us, even if the skies get rough 
I'm giving you all my love, I'm still looking up 

Tôi sẽ không từ bỏ đâu, dù ngoài trời kia đầy giông tố 
Tôi sẽ vẫn yêu hết mình, vẫn luôn luôn vươn lên 

Nếu bạn đã lựa chọn được con đường đi đúng đắn cho bản thân mình, hay đang bước đi trên con đường ấy rồi thì hãy kiên trì - bền gan- vững chí, bạn nhất định sẽ đi được đến cuối cùng của con đường đó. Chỉ có kiên định theo đuổi mục đích sống của mình thì mới không vì một chút khó khăn, khổ nạn rồi dễ dàng dừng lại giữa đường để phải thấy hối tiếc trong tương lai! 

God knows I'm tough enough 
We've got a lot to learn 
God knows we're worth it (and we're worth it) 

Chúa chứng giám tôi sẽ bền bỉ thế nào 
Chúng ta luôn còn nhiều thứ để học hỏi.. 
Chúa chứng giám chúng ta xứng đáng với điều đó 

Qua 3S Radio tôi xin được gửi tặng các bạn tôi một bài hát xưa cũ yêu thích tôi vẫn thường hay nghe mỗi khi yếu lòng: "Tôi không bao giờ từ bỏ" "I won't give up" của Jason Mraz



I don't wanna be someone who walks away so easily 
I'm here to stay and make the difference that I can make 

Tôi không muốn thành kẻ dễ dàng bỏ cuộc 
Tôi còn ở đây để tạo nên khác biệt mà tôi có thể

Thứ Sáu, tháng 11 17, 2017

Captain Hook - my UK mate!

My UK friend - Captain Alex Hook.

Năm 2001, tôi bắt đầu gặp Alex là một FC lần đầu tiên tại trụ sở European Expert, Brussel, Bỉ để trao đổi yêu cầu viết lại hệ thống quản lý contractor toàn châu Âu của Harvey Nash UK (HVN) và đưa mấy hệ thống từ Foxtran, MS Access lên Internet.
Hơn 1 năm liền sau đó, lăn lộn tại London làm kiến trúc tổng thể hệ thống trước mắt là cho toàn UK, sau đó sẽ mở rộng sang châu Âu, Úc và Mỹ. 
Con đường học tập và trở thành kiến trúc sư trưởng phần mềm với những sản phẩm đầu tay như vậy. Nó gắn liền với những giờ coding xuyên màn đêm tại Anh Quốc nhưng cũng gắn với những buổi chiều thứ 6, Happy Hour, tay cầm 1/2 pin bia đứng co ro góc phố London gần Bruton street, hoặc hôm sang chảnh thì vào làm một chai bacardi breezer ở The Coach & Horses pub cổ kính như một thói quen hàng tuần với Alex và Sarah. 

Rồi có năm lại sang London, vừa làm kiến trúc cho kênh truyền hình Discovery, vừa tiếp tục onsite cải tiến hiệu suất hệ thống của HVN. 

Thời gian tua nhanh, vèo cái đã 16 năm. Không ngờ cũng lại có một tối thứ 6 ngồi uống bia với bạn thuyền trưởng Hook. Chỉ khác lần này thì co ro trong cái rét gấp gáp đầu mùa tại Hà Nội. Chúng tôi cùng nhau nhớ lại thời máu lửa đó. Hệ thống C.M.S tôi chắp bút thiết kế, phát triển và lập trình trong suốt 5 năm đầu tiên giờ vẫn đang chạy tốt, phục vụ biz toàn cầu Anh, Mỹ, Úc, Đức, HK, JP, etc của HVN suốt hơn chục năm qua dù rất ít phải đầu tư thêm. Captain Hook nói rằng ROI hệ thống này đã là khủng khiếp, quá nhiều triệu bảng rồi, không tính nổi. Rồi thì những cái tên của các hệ thống Tempaid, Paloma, BOND, BASC, PS Finance, etc dần dần được nhắc tới.

Captain Hook thông báo, đề xuất cuối cùng của tôi về kiến trúc phần mềm liên quan đến OLTP & OLAP trước khi tôi rời dự án sang Nhật làm thì captain Hook đã phải mất thêm 2 năm để thuyết phục BoD của HVN bỏ tiền đầu tư làm. Có lẽ vì thế, hệ thống vẫn rất ổn đến tận bây giờ. 

Tôi vui miệng rằng sản phẩm kiến trúc đầu tay của mình, đến giờ, đã có thể sang trang mới, với native Cloud based Microservices. 

Tuy nhiên, Captain Hook thì vẫn có kế hoạch tiếp tục sử dụng C.M.S của 16 năm trước. Chúng tôi hẹn nhau năm 2021 sẽ gặp nhau tại London để tổ chức sinh nhật 20 năm cho hệ thống phần mềm C.M.S.

Chủ Nhật, tháng 4 02, 2017

Quan tâm?!? (Facebook triết)

The adventure of life is to learn.
The purpose of life is to grow.
The nature of life is to change.
The challenge of life is to overcome.
The essence of life is to CARE...

Phiêu lưu trong đời dành cho học hỏi
Mục đích cuộc đời để trưởng thành lên.
Bản chất cuộc đời vốn luôn thay đổi
Thách thức trên đời chỉ để vượt qua
Tinh túy ở đời là biết QUAN TÂM...

关心: QUAN + TÂM
Quan trong chữ QUAN hệ, liên quan, liên đới, Relation.

TÂM: là trái Tim, là hồn, là trí óc, Heart & Mind.

Triết tự vậy, chả hoá ra Quan tâm là chú tâm, để ý đến sự việc, sự vật, mọi thứ mình thấy trong mối quan hệ tổng hoà với xung quanh, không chỉ bo bo tới mỗi chủ thể được. Trong công việc, quan tâm đòi hỏi vượt qua phần trách nhiệm được giao. Trong cuộc sống, đó là phải là sự chân thành đặt mình cùng với người khác và chia sẻ dù chỉ là những gì nhỏ nhất mình có thể. Càng nhiều năng lượng, bạn càng có nhiều sự quan tâm kiểu vậy.
Nhưng, thay vì nói: bạn đau lắm à? bạn mệt mỏi lắm à? Thì hãy nói: Để đó mình cùng cân team cho😋.

Thế rồi, bạn 40 tuổi. Thực tế từ 0 đến 40 bạn được sinh ra và dạy dỗ theo cách phải quan sát và quan tâm đến quá nhiều thứ. Có lẽ khi chúng ta lựa chọn quan tâm đến tất cả mọi thứ thì khi đó chính là lúc đời sẽ cho ta biết mùi vị tinh chất của nó.
Bởi vậy, khả năng học dành sự quan tâm của mình cho một vài điều thực sự đáng quan tâm chắc chắn giúp cho cuộc đời này dễ dàng hơn nhiều. Nếu ta có thể bớt những mối quan tâm đi, mà thực ra là quan tâm một cách nghiêm túc đến vài thứ thôi thì cuộc đời này đã trở nên ngon ăn rồi.
Ý mình tức là phải luôn có vài thứ đéo đáng để quan tâm ấy nhé.

Thứ Năm, tháng 3 23, 2017

Hiệu ứng cánh bướm, phiên bản mới - The all-new Butterfly Effects!



Trong một thế giới kết nối mạnh mẽ kỳ lạ ngày nay, việc quyết định cả một vận mệnh công ty hay thậm chí quốc gia có khi chỉ xuất phát từ những thứ li ti vốn hay bị coi là tiểu tiết ở ta.
Có một quan sát khá hay của một chuyên gia tài chính Mỹ James nói rằng dù facebook bị bác tổng Tập Cập Bình cấm tiệt ở Trung Quốc từ 2009 thì bạn Mark Zukerberg vẫn nên đăng status cám ơn đích danh bác ấy.

Để lý giải cho điều này, phải nhìn xem bác Tập đã làm gì ở TQ.

Hoá ra, chỉ vì bác Tập tiến hành "đả hổ diệt ruồi" ở TQ mà chỉ 2 năm qua có hơn 300,000 quan chức tham nhũng bị "trảm", dẫn đến thị trường tiêu thụ chính đồng hồ Thuỵ Sỹ là TQ & HK (mua làm quà tặng) bị suy giảm trầm trọng. Một nước nhỏ như Thuỵ Sỹ, sống nhờ xuất siêu mà đồng hồ đang chiếm tỷ trọng lớn nhất trong xuất khẩu (>11%) suy giảm trong suốt 18 tháng trở lại đây. Thế là ngân hàng quốc gia Thuỵ Sỹ SNB (Swiss National Bank) lo cuống quýt. Chưa kể, có một lượng lớn ngoại tệ (của các quan tham TQ) tẩu tán, gửi vào Thuỵ Sỹ qua nhiều con đường khác nhau cho chắc cú. Đồng franc nhờ lượng dự trữ ngoại tệ dư thừa mà tăng giá không ngừng và càng đắt đỏ. SNB nắm đống ngoại tệ, sản xuất xuất khẩu thì giảm sút, không cần vốn nữa, đành vác tiền đi mua cổ phiếu các công ty tên tuổi mà facebook là một điển hình trong số đó. Sự thật, SNB nắm số lượng cổ phần phổ thông giao dịch được của facebook nhiều gần gấp đôi chính bạn Mark luôn (0.28% vs 0.17%). Vô hình chung, cũng là một sự đảm bảo ngầm cho giá trị của facebook. Trong 2 năm này, cổ phiếu facebook tăng hơn 66%.

Thế chả hoá ra, "diệt ruồi" ở Trung Quốc làm tăng giá trị công ty facebook đó sao.

Thảo nào, bạn Mark học và nói chuyện bằng tiếng Mandarin khi gặp bác Tập. Hơn nữa, còn xin bác Tập đặt tên Tàu cho con gái sắp sinh ra khi ấy. Tuy nhiên, bác Tập đã từ chối khéo.

Thứ Sáu, tháng 2 10, 2017

Happy birthday, Chip!

For 11.02.2017
Gà con yêu quý,
Một năm mới, tuổi mới của con lại đến rồi. Gà con sinh vào một ngày đặc biệt vì đảo lộn phộc với ngày cha sinh, thời khắc trung tuần tháng 2, thời khắc vừa bình yên vừa náo nức. Có người nói, thời khắc của tuần lễ tình yêu Valentine này sẽ chữa lành mọi vết thương. Nhưng ngay cả khi vết thương dẫu được chữa khỏi, những vết sẹo sẽ vẫn còn đó, nhắc nhở con người ta về nỗi đau. Hãy nhớ đến cha, Gà con yêu quý. Hãy nhớ đến tình yêu và những ký ức bé thơ vui buồn về cha.
Nước mắt chảy xuôi, con là món quà đâù tiên quý giá nhất đời này mà cha có được. Không còn nghi ngờ gì nữa. Con bé tí tẹo đã rất khéo tay, tỉ mẩn và kỹ càng, cặn kẽ, thậm chí cầu toàn. Nhiều người bảo cầu toàn quá thì khó sống nhưng cha không đồng ý. Cứ cầu toàn, ham hiểu biết và tìm tòi sự việc đến chân tơ kẽ tóc như bản tính trời ban cho con nhé. Tri thức được xây dựng từ những thứ nhỏ bé như vậy. Và rồi, cha tin tưởng, hạnh phúc cũng chỉ cần có xuất phát điểm từ những thứ nhỏ nhoi thế thôi. Cha đủ kiên nhẫn để chờ một ngày người bạn bé xíu năm nào quay lại, và chúng ta sẽ tiếp tục rong ruổi cùng nhau lang thang trên những con đường rộng mở, vốn dĩ ông trời đã dành cho riêng chúng ta, chỉ là sớm hay muộn mà thôi.
Hãy mạnh mẽ, hãy luôn là Gà con đầy trí tuệ, tình cảm và tinh tế nhé.
Sinh nhật này cha tặng con bài hát ưa thích "Những điều nhỏ nhoi" của Vy Oanh nè.
Có lúc tôi gục ngã, nhìn ngày trôi hững hờ.
Có lúc tôi thầm mơ sẽ hái sao trên trời,
Mà nào có biết rằng, hạnh phúc luôn bên mình là những điều nhỏ nhoi thường ngày mà tôi tìm mãi nơi phù du.
Bỗng thấy yêu đời quá, yêu ngày xanh nắng vàng
Bỗng thấy yêu thời gian, hạnh phúc đến nhẹ nhàng.
Yêu sao những tiếng cười và những khi bên người.
Ngày chẳng còn lo toan mệt nhoài.
Cuộc đời vì thế nên đẹp tuyệt vời!

Thứ Ba, tháng 1 24, 2017

Phan Hầm Mỏ - End of the road

Tết về, phố đông chật người rồi chợt bỗng vắng lặng đường khuya. Một mình bước đi trên con phố nhỏ dưới cơn mưa bụi, lặng lẽ ra ga tàu. Vừa đi, vừa miên man suy ngẫm về câu chuyện "Sống là không chờ đợi". Liệu còn gì mà tôi chưa làm hết mình, còn gì tôi chưa sống hết mình mỗi ngày qua, có gì mà tôi "đánh mất" và "nhặt được" trên chặng đường mình đi hay không? Câu chuyện ấy viết rằng "Đừng bao giờ giữ lại một cái gì để chờ dịp đặc biệt cả... Mỗi ngày sống là một dịp đặc biệt rồi..."

Cuộc đời con người, có nhiều quyết định đúng, có nhiều quyết định sai. Rồi có những cái lấp lửng giữa cả 2 nữa, mà không thể minh bạch được đúng hay sai. Ngoài ra, cũng còn theo chiều thời gian nữa. Tôi nhớ lại những cái vốn rất sai của mình bây giờ lại có điểm quá đúng.

Chợt thấy mình lẻ loi. Mưa dần rơi nặng hạt cũng chẳng buồn dương ô lên nữa. Con đường nhỏ len lỏi trong khu dân cư, không một bóng người, trời khuya không một ánh đèn cửa sổ, chỉ còn ánh sáng yếu ớt từ vài ngọn đèn đường lưa thưa và vừng sáng từ các máy bán nước uống tự động. Đôi giày sũng nước mưa từ chiều nặng bên tay xách, tôi bỏ nốt đôi dép mà mấy em đồng nghiệp đưa cho, chân không rảo bước. Nước dưới chân mát lạnh, không hề gây khó chịu mà chỉ giúp nhanh bước hơn ra sân ga.

Thông thường, ở một thành phố xa lạ, nếu cuối tuần trời mưa thì cũng có nghĩa là ông trời muốn giam bước chân người xa nhà, chỉ vào mạng, ngủ vùi đầu, xem TV hay viết blog thôi chẳng hạn... Sau rất nhiều lần thành công, lần này, ông ấy đã thất bại vì mình "sổng" từ tối thứ 6 đến Chủ Nhật mới về. Và vì thế, mưa cứ luấn quấn bước chân, dò hỏi xem "anh buồn à?", "anh muốn gì à?" 

Ừ. Thì tôi buồn, nỗi buồn của một kẻ hành khất cô đơn, kiêu ngạo cố tỏ vẻ không còn cần gì nữa, không muốn gì nữa.

Ừ. Thì tôi lại muốn rồi. Mâu thuẫn chưa? Tôi muốn có ai đó cùng đi trong mưa. Cùng sánh bước trong ướt lạnh, chân không giầy, dẫm nước, miễn là bàn tay còn ấm. Tự hỏi mình, khi như thế, có còn cần đi tiếp ra sân ga nữa không đây? Bất chợt nhận ra, trong muôn vàn hạt mưa bụi bay bay, táp vào mặt, có giọt âm ấm đọng lại.

Văng vẳng trong đầu, câu hát vu vơ, lúc mờ lúc rõ của một người bạn thân ôm đàn guitar, ngân nga đêm nào. Có những lúc, nỗi buồn khi cô đơn làm người ta vui.

Ta tưởng yêu thương là sẽ cùng nhau đi tận cuối con đường. Hóa ra không hẳn vậy, chỉ là tới cuối con đường ta mới kịp nhận ra điều đó thôi. Mà yêu thương cũng không dừng lại khi đến cuối đường đâu, như cuối con đường này sẽ là 1 con đường mới. Cuối năm này sẽ có một năm mới với bao dự định ấp ủ mới.

Gửi 3S Radio Tết con gà 2017 một bài hát rất xưa cũ nhé. End of the road của Boys2Men với lời nhắn, Chúc các bạn nghe đài một năm mới Tết đoàn viên và yêu thương, hãy để tim rộng mở và cảm nhận yêu thương trên từng giây phút và từng bước chân đi, đừng chờ đợi đến một nẻo cuối con đường đâu đó nữa ấy.

Thứ Sáu, tháng 1 20, 2017

Kidnapping - Bắt cóc?

3 năm trước, tôi là cái áo khoác cậu bé rúc vào khi lạnh, là cái ghế cậu bé ngồi lên, là doctor Know-It-All để cậu bé mang mọi câu hỏi đến.
2 năm trước, một kẻ ích kỷ đã cho mình cái quyền tước đi mối thâm tình đó.
Cậu bé dần dà bị dẫn dắt bởi "... con không đi chơi với bố, không về nhà mình sợ bố bắt cóc con..."
Quặn thắt! Nước mắt rơi trong tim!
Không thể cất nổi lời. Chỉ tâm niệm Time will tell the truth!
Hôm nay, cậu vẫn không đi với bố nhưng đã biết tự khẳng định được: "...bố chẳng bắt cóc con đâu mà..."
Lái xe đêm muộn, chợt bất giác ngân nga hát theo radio FM:
"...  Bỗng thấy yêu đời quá, yêu ngày xanh nắng vàng
Bỗng thấy yêu thời gian, hạnh phúc đến nhẹ nhàng.
Yêu sao những tiếng cười và những khi bên người.
Ngày chẳng còn lo toan mệt nhoài.
Cuộc đời vì thế nên đẹp tuyệt vời!
... Có lúc tôi gục ngã, nhìn ngày trôi hững hờ.
Có lúc tôi thầm mơ sẽ hái sao trên trời, 
Mà nào có biết rằng, hạnh phúc luôn bên mình là những điều nhỏ nhoi thường ngày mà tôi tìm mãi nơi phù du."

Một điều nhỏ nhoi ấy, cậu bé đã trao tôi, trưa nay.


Thứ Năm, tháng 1 19, 2017

ĐÔI NÉT VỚI TẬP LỆNH NCCL ĐA GPU (GRAPHIC PROCESSING UNIT: VI XỬ LÝ ĐỒ HỌA)


Ngày nay, nhiều máy chủ chứa 8 GPU hoặc nhiều hơn. Trên nguyên tắc đó, chạy một ứng dụng sử dụng một đến nhiều GPU đúng ra sẽ mang lại một hiệu suất gấp bội. Nhưng thực tế thì khá khó để tận dụng được lợi thế này. Có hai nguyên nhân cơ bản phía sau sự thiếu tính khả mở của hệ thống đa-GPU. Đầu tiên ứng không có đủ luồng xử lý song song để dùng hết các vi xử lý trên GPU. Lý do thứ hai gây khó khăn khi tận dụng mở rộng ở chỗ các bộ vi xử lý sẽ phải dành thời gian để trao đổi dữ liệu với nhau quá nhiều thay vì tập trung chạy thuật toán. Để giảm tình trạng nút cổ chai ấy, điều chính yếu cần thiết phải tạo được băng thông lớn nhất sẵn sàng cho các kết nối liên GPU. NCCL là một đáp án.

NCCL (phát âm là "Nickel") là một thư viện tập lệnh gốc đa-GPU có hướng cấu trúc liên kết và có thể dễ dàng tích hợp vào các ứng dụng. Khởi thủy từ một dự án nghiên cứu mã nguồn mở, NCCL được thiết kế để có dung lượng thật nhỏ dựa trên C ++ thông thường và các thư viện CUDA. NCCL có thể được ứng dụng vào trong các phần mềm đơn luồng hoặc đa luồng, để quản lý truyền nhận tin giữa các luồng xử lý hiệu quả. Sau nữa, NCCL đã bao gồm sẵn các API vốn rất quen thuộc với bất cứ ai có kinh nghiệm sử dụng các tập lệnh MPI.

Hình 1: Minh họa về tập lệnh All-Reduce.

Tập lệnh giao thức

Các chương trình giao thức tổ hợp là mẫu hình chung của truyền dữ liệu giữa nhiều bộ vi xử lý. Nếu đã có kinh nghiệm với MPI thì có lẽ cũng đã quen thuộc với một số phép toán tổ hợp lệnh. Ví dụ, All-Reduce (Giảm toàn phần) bắt đầu với mảng độc lập $latex V_k$ của N giá trị trên K bộ vi xử lý và kết thúc với mảng giống hệt S của N giá trị, trong đó $S[k] = V_0[k] + V_1[k] + ... + V_k[k]$, cho mỗi bộ xử lý k . Xem hình 1.
Một giao thức tổ hợp thông thường khác là All-Gather (Nhóm toàn phần), trong đó mỗi bộ xử lý trong tập hợp K bắt đầu với một mảng độc lập của N giá trị và thu thập dữ liệu từ tất cả các bộ xử lý khác để tạo thành một kết quả mảng N*K , như minh họa ở hình 2.

Hình 2: Minh họa về All-gather.
Broadcast (Tán xạ) là một ví dụ thứ ba. Dưới đây là một thành phần đệm gồm N phẩn tử trên một bộ xử lý được sao chép vào tất cả các bộ xử lý khác, như hình 3 cho thấy.
Hình 3: Minh họa về Broadcast
Tất cả các tổ hợp trên có thể được thực hiện ở vùng "ngoại vi", có bộ đệm vào và ra riêng biệt, hoặc "nội hàm" có chồng lấn vào và ra.
Hình 4: Giao thức PCIe chung cho 4 GPU gắn trong hệ thống có một CPU duy nhất. Mũi tên màu đỏ đại diện cho các kết nối băng thông PCIe x16.
Có rất nhiều phương pháp để thực hiện tổ hợp hiệu quả. Tuy nhiên, điểm then chốt khi thực hiện thì phải cân nhắc đến kiến trúc giao thức của liên kết giữa các bộ vi xử lý. Ví dụ như ở giao thức nhánh cây PCIe trong hình dưới đây về đường tán xạ dữ liệu từ GPU0 đến tất cả các GPU khác.
Thuật toán nhánh cây hai bước là một lựa chọn phổ biến ở đây. Tại bước đầu tiên, dữ liệu được gửi từ GPU0 tới một GPU khác, và trong bước thứ hai cả hai sẽ gửi dữ liệu đến các bộ vi xử lý còn lại. Dù thế thì vẫn có nhiều cách thực thi khác nhau. Dữ liệu có thể được gửi từ GPU0 đến GPU1 trong bước đầu tiên và sau đó từ GPU0 đến GPU2 và từ GPU1 đến GPU3 ở bước hai, hoặc có thể thực hiện dưới hình thức bản sao ban đầu từ GPU0 đến GPU2, kế đó ở bước hai thì từ GPU0 đến GPU1 và GPU2 đến GPU3. Kiểm tra cấu trúc liên kết, cách thứ hai tốt hơn rõ rệt, vì nếu gửi dữ liệu đồng thời từ GPU0 đến GPU2 và GPU1 đến GPU3 sẽ gây tranh chấp tài nguyên trên các liên kết PCIe, hiệu suất băng thông ở bước này bị giảm một nửa. Nói chung, để đạt được hiệu quả cao đối với tổ hợp lệnh đòi hỏi sự quan tâm cẩn trọng đến cấu trúc liên kết.
Để tối ưu hóa băng thông Broadcast, còn một cách tiếp cận tốt hơn là tạo liên kết cấu trúc vòng PCIe.
Tán xạ được thực hiện bằng việc sắp xếp các tập nhỏ dữ liệu đầu vào xung quanh vòng từ GPU0 để GPU3. Điều thú vị là, các thuật toán vòng cung cấp băng thông cận tối ưu cho hầu hết tất cả các thực thi tổ hợp lệnh tiêu chuẩn, thậm chí khi áp dụng cho cấu trúc PCIe kiểu "nhánh cây". Tất nhiên phải lưu ý rằng việc lựa chọn đúng chiều tuần hoàn của vòng vẫn rất quan trọng.

Hình 5: Vòng tuần hoàn của GPU trong cây PCIe.

Tập lệnh GPU với NCCL

Để cung cấp băng thông tối đa, NCCL áp dụng các tập lệnh tổ hợp kiểu vòng. NCCL ngầm đánh chỉ số GPU theo trật tự vòng tối ưu. Điều này cung cấp hiệu suất tuyệt vời cho ứng dụng mà nhà phát triển không còn phải lo lắng về cấu hình phần cứng cụ thể ra sao.
Nhiều tổ hợp lệnh đòi hỏi một bộ đệm chứa kết quả trung gian. Để giảm thiểu dung lượng chiếm bộ nhớ xuống còn một vài MB trên mỗi GPU, NCCL chia tách tổ hợp lệnh lớn thành nhiều phần nhỏ. Hiệu quả cực thấp nếu khởi tạo lõi xử lý và thực thi gọi hàm cudaMemcpy riêng biệt cho mỗi công đoạn hay từng phần nhỏ của cùng một thuật toán tổ hợp. Thay vào đó, mỗi tổ hợp được thực hiện trọn vẹn trên một nhân CUDA. NCCL tận dụng tối đa truy cập trực tiếp của giao thức GPUDirect Peer-to-Peer để truyền dữ liệu giữa các bộ xử lý. Trường hợp không lấy được truy cập trực tiếp peer-to-peer (ví dụ, khi phải truyền qua một kết nối QPI), thì các dữ liệu đã truyền đi được tổ chức thông qua một bộ đệm trong một vùng xác định trên bộ nhớ hệ thống. Tương tự như vậy, đồng bộ dũ liệu được thực hiện bằng cách kiểm tra các biến số biến đổi trong vùng nhớ của card (hoặc vùng nhớ xác định của hệ thống).
Bên trong, NCCL quy việc thực hiện mỗi tổ hợp lệnh về 3 nguyên hàm: Copy, Reduce, và ReduceAndCopy. Mỗi nguyên hàm được tối ưu hóa để truyền đi một lượng dữ liệu tinh giản (4-16KB) giữa các GPU. Các lõi xử lý cũng đã được tối ưu hóa đặc biệt để đạt được băng thông tối đa trong khi lại chiếm dụng thấp. Kết quả là, NCCL có thể sử dụng tối đa tải một kết nối PCIe 3.0 x16 mà chỉ bằng một đơn vị tổ hợp luồng xử lý CUDA. Điều này khiến giải phóng phần lớn GPU dùng vào chạy các tác vụ tính toán đồng thời với truyền tải thông tin.

NCCL hiện hỗ trợ các tập lệnh all-gather, all-reduce, broadcast, reduce, và reduce-scatter, không hạn chế số lượng GPU được sử dụng, miễn là nằm trên cùng một máy.

Sử dụng NCCL

Mã nguồn mở NCCL có sẵn trên Github . Các thư viện có thể chạy trên bất kỳ phiên bản Linux phổ biến và cũng tương thích với CUDA 7.0 hay mới hơn. Hiện giờ, CUDA chỉ hỗ trợ truy cập trực tiếp giữa các GPU cùng kiến trúc và phải nằm trên cùng một máy (PCIe root hub). GPU không phù hợp các tiêu chí này vẫn được hỗ trợ bởi NCCL, mặc dù hiệu suất sẽ được giảm do việc chuyển dữ liệu sẽ đi vòng thông qua vùng nhớ xác định trong bộ nhớ hệ thống.
Các NCCL API đều tuân thủ chặt theo MPI. Trước khi thực thi các tập lệnh, một đối tượng truyền tin phải được tạo ra trên mỗi GPU. Các đối tượng này xác định các thiết lập của các GPU tham gia vào tổ hợp và lập bản đồ các luồng thông tin liên lạc giữa chúng. Tập hợp đối tượng giao tiếp liên quan với nhau được gọi là một clique (phe). Có hai cách để khởi tạo đối tượng truyền tin trong NCCL. Phương pháp phổ thông nhất là gọi hàm ncclCommInitRank() tương ứng với mỗi GPU.

ncclResult_t ncclCommInitRank(ncclComm_t* comm,
int nGPUs, ncclUniqueId cliqueId,
int rank);
Chức năng này giả định rằng các GPU thuộc các hàng xác định đã được thiết lập thông qua cudaSetDevice(). nGPUs là số lượng GPU trong một clique. cliqueId cho phép các hàng trong cùng clique nhận diện nhau. Các hàng thì sẽ có cùng một cliqueId. Để làm vậy, hàm ncclGetUniqueId() được gọi từ trong một hàng và sẽ phát tán kết quả trả về uniqueId đến các hàng khác còn lại trong clique thông qua mô hình truyền thông tùy chọn (ví dụ, MPI_Bcast).
Các biến số cuối cùng trong ncclCommInitRank() xác định các chỉ số của GPU hiện tại trong clique. Nó phải là duy nhất cho mỗi cấp trong clique và trong tập hợp [0, nGPUs]. Chỉ số này được sử dụng, ví dụ, để xác định các GPU nguồn cho lệnh broadcast, hoặc để truy xuất đến theo lệnh all-gather.
Sau khi khởi tạo thành công, ncclCommInitRank() trả về ncclSuccess và *comm được thiết lập chứa đối tượng truyền tin mới của NCCL.
Bên trong, ncclInitRank() thực hiện đồng bộ giữa tất cả các đối tượng truyền tin trong cùng một clique. Như vậy, nó phải được gọi từ các luồng khởi tạo khác nhau cho từng GPU, hoặc từ các xử lý riêng biệt (ví dụ, MPI ranks). Cụ thể, nếu gọi ncclInitRank() trong cùng một vòng lặp xử lý cho các GPUs sẽ dẫn đến tình trạng xung đột khóa chết (deadlocks)
Cách thứ hai để khởi tạo các đối tượng truyền tin là sử dụng ncclCommInitAll(). Đây thực chất là một thói quen tiện dụng để tiết kiệm việc phải sinh thêm các luồng khởi tạo mới để chạy NCCL trong trình ứng dụng đơn nhiệm.

ncclResult_t ncclCommInitAll ( ncclComm_t * comms ,
int nGPUs ,
int * devList );
Biến comms đang trỏ đến một mảng các đối tượng ncclComm_t, tương ứng cho mỗi hàng chứa nGPUs trong cùng 1 clique. devList thì quy định cụ thể thiết bị CUDA nào tương ứng với từng hàng. Khi khởi tạo các đối tượng truyền tin, ta có thể gọi các tập lệnh thông qua các hàm gốc của chúng, chẳng hạn như ncclAllReduce().
ncclResult_t ncclAllReduce ( void* sendoff ,
void* recvbuff , int count ,
ncclComm_t comm ,
ncclDataType_t type , ncclRedOp_t op ,
cudaStream_t stream);
Tài liệu chi tiết cho mỗi tập lệnh được cung cấp trong file nccl.h. Hầu hết các biến đều tương tự như trong tập lệnh API của MPI. Trường hợp ngoại lệ nổi bật là các biến dòng (stream). Tương tự như rất nhiều chương trình CUDA "Async", lệnh NCCL sẽ lên lịch thực thi trong một dòng, nhưng có thể trả lại trước khi tập lệnh được hoàn tất. Bằng cách xếp các tập lệnh vào hàng đợi còn nhân tính toán riêng khác ở các dòng độc lập, GPU có thể chồng lấn nhiều hơn công việc đòi hỏi tính toán tập trung cao vào cùng thời điểm truyền tập lệnh. Nhằm tối đa hóa sự chồng lấn này, các tập lệnh NCCL được lập lịch chạy trên dòng có độ ưu tiên cao để cho phép chúng trượt qua lại trong các lưới tính toán tập trung.
Ứng với mỗi đối tượng truyền tin trong một clique đều phải gọi đến ncclAllReduce(), mỗi lần gọi được thực hiện qua bộ đệm gửi và nhận riêng biệt, v.v. Tập lệnh NCCL sẽ giả định ngữ cảnh CUDA tương ứng là mới nhất. Và bởi vì NCCL chạy không đồng bộ, một vòng lặp đơn giản có thể được sử dụng để khởi tạo một tập lệnh từ một ứng dụng đơn luồng.

for ( int gpu = 0 ; gpu < nGPUs ; ++ gpu ) {
cudaSetDevice ( devList [ gpu ]);
}
ncclAllReduce (...);

Hiệu suất

Hình 6: Liên kết băng thông đạt được của tập thể NCCL khác nhau.
Hiệu suất mà tập lệnh NCCL đạt được phụ thuộc vào chính cấu trúc liên kết của máy tính. Trong trường hợp tốt nhất, tất cả các GPU đều chiếm phần truy cập như nhau. Đây là mô hình phổ biến nhất ở các máy trạm được trang bị vài GPU. Các máy chủ lớn hơn thường gắn với CPU kép, và một số lượng các GPU tách biệt trên các hub IO khác nhau. Hình 6 cho thấy băng thông NCCL tương ứng đối với các tập hợp lệnh khác nhau đo trên máy NVIDIA Digits DevBox trang bị 4 GPU GeForce GTX Titan X được ráp theo mô hình ở hình 4 trên đây.
Đường màu đỏ 10.4 GB/ s đại diện cho băng thông sử dụng bở một lệnh cudaMemcpy dự liệu lớn giữa hai trong số các GPU (cụ thể là GPU 0 và 2 trong hình 4). NCCL vẫn có thể duy trì tỷ lệ cao khả năng chiếm dụng băng thông cao điểm đó khi thực hiện giao tiếp giữa tất cả bốn GPU.

Hướng phát triển trong tương lai và một số điểm lưu tâm

Mục tiêu của NCCL là để cung cấp tập lệnh tổ hợp tự nhận thức được cấu trúc liên kết nhằm có thể cải thiện độ khả mở của các ứng dụng đa GPU. Sử dụng NCCL sẽ có thể giúp đạt được hiệu suất tuyệt vời mà không phải chú ý về các chi tiết phần cứng bậc thấp.
Nhữn mẩu mã nguồn ví dụ đơn giản cho cả hai loại ứng dụng trình đơn và đa luồng MPI cũng được kèm sẵn trong bộ thư viện NCCL. Xuất phát từ một dự án nghiên cứu, mọi phản hồi cuả các nhà phát triển đểu được hoanh nghênh vì dự án này vẫn còn tiếp tục. Hãy dùng thử và chia sẻ bạn nghĩ gì nhé! Để cập nhật về những thông tin mới nhất, hãy đến dự buổi nói chuyện NCCL của tôi ở GTC.

Thứ Hai, tháng 1 02, 2017

LÀM THẾ NÀO ĐỂ CHẠY SONG SONG HỌC-SÂU TRÊN GPU (PHẦN 2)


Mô hình song song


Ở phần trước, tôi đã giải thích qua khái niệm về xử lý song song trên mô hình (MP-Model Parallelism) và dữ liệu (DP-Data Parallelism) cũng như phân tích làm thế nào để sử dụng DP hiệu quả trong học-sâu (Deep Learning). Ở bài viết này, tôi sẽ tập trung vào mô hình song song (MP).

XIn nhắc lại, mô hình xử lý song song là, khi bạn chia một mô hình thành từng phần cho các GPU và sử dụng cùng một dữ liệu cho từng mô hình; vì vậy mỗi GPU hoạt động trên một phần của mô hình chứ không phải là một phần của dữ liệu. Trong học-sâu, một cách để làm việc này bằng cách phân trọng số, ví dụ một ma trận 1000 x 1000 thì trọng số sẽ được phân chia thành các ma trận 1000 × 250 nếu bạn sử dụng 4 GPU.

Sơ đồ MP. Đồng bộ hóa kết quả là cần thiết sau mỗi vòng tính tích vô hướng với ma trận trọng số cho cả hai chiều tiến và quy nạp.

Một lợi thế của phương pháp này nhận thấy ngay: Nếu chúng ta chia trọng số giữa các GPU chúng ta có thể chạy với mạng nơ-ron rất lớn dù rằng bộ nhớ của một GPU đơn lẻ không đủ dung lượng nạp trọng số vào. Ở phần trước, tôi cũng có nói rằng các mạng nơ-ron lớn như vậy là không cần thiết với đa số người. Tuy nhiên, đối với các tác vụ học-không-giám-sát (un-supervised learning) khủng hơn -trong tương lai thì sẽ khá phổ biến – mạng nơ-ron lớn lại rất cần thiết dùng để học được các đặc tả chi tiết nhất nhằm có được hành vi “thông minh”.

Làm thế nào để thuật toán chuyển tiến và quy nạp phân chia thành các ma trận như vậy được? Nếu nạp ma trận số học từng bước từng bước, ta sẽ thấy rõ ràng ngay:

Giả sử bắt đầu tìm kiếm tại A, B = C đó sẽ là tích ma trận trong trường hợp thông thường thuật toán tiến. Kích thước MP với 2 GPU, phân lô 128 và ma trận trọng số 1000 × 500 sẽ là:

Tiêu chuẩn: 128 × 1000 nhân 1000 × 500 = 128 × 500

Chia theo ma trận trọng số chiều dọc: 128 × 500 nhân 500 × 500 = 128 × 500 -> phép cộng ma trận

Chia theo ma trận trọng số chiều ngang: 128 × 1000 nhân 1000 × 250 = 128 × 250 -> phép chồng ma trận

Để tính toán sai số trong các lớp bên dưới, cần phải truyền các sai số tới được các lớp tiếp theo, hoặc nói theo cách toán học hơn, ta cần tính toán các giá trị delta bằng cách lấy tích vô hướng của các sai số ở lớp {i} trước với các trọng số kết nối lớp {j} tiếp theo , tức là :

Tiêu chuẩn: 128 × 500 nhân 500 × 1000 = 128 × 1000

Chia theo ma trận trọng số chiều dọc: 128 × 500 nhân 500 × 500 = 128 × 500 -> phép chồng ma trận

Chia theo ma trận trọng số chiều ngang: 128 × 250 nhân 250 × 1000 = 128 × 1000 -> phép cộng ma trận

Chúng ta thấy ở đây, cần phải đồng bộ hóa (cộng hoặc xếp chồng trọng số) sau mỗi kết quả tích vô hướng và bạn có thể nghĩ rằng như vậy sẽ chậm hơn so với xử lý dữ liệu song song DP ,vì DP đồng bộ hóa chỉ một lần. Nhưng có thể dễ dàng thấy rằng điều đó không phải đúng cho hầu hết các trường hợp, thử tính toán xem: Trong DP một khuynh độ của 1000 × 500 cần được truyền một lần/lớp cho 1000 × 500 lớp – tức là 500000 đơn vị; còn với MP chúng ta chỉ cần truyển một ma trận nhỏ cho tiến và quy nạp với tổng số 128000 hoặc 160000 đơn vị – dung lượng ít hơn gần 4 lần! Vì thế dù băng thông card mạng vẫn là nút cổ chai chính trong toàn bộ ứng dụng, nhưng sẽ ít bị ảnh hưởng hơn nhiều so với trong trường hợp DP.

Dĩ nhiên, tất cả chỉ là tương đối và phụ thuộc vào kiến ​​trúc mạng. DP sẽ khá nhanh cho các mạng nhỏ và rất chậm cho các mạng lớn, MP thì ngược lại. Càng nhiều thông số, MP càng có lợi. Lợi thế càng thực sự rõ ràng khi mạng nơ-ron có trọng số vượt quá dung lượng một bộ nhớ GPU đơn.MP có thể xử lý việc mà thông thường sẽ cần đến hàng ngàn bộ vi xử lý CPU.

Tuy nhiên, nếu bạn chạy các mạng nhỏ, bộ nhớ GPU dư thừa và và vẫn còn năng lực xử lý (không phải tất cả các lõi đang chạy), thì dùng MP sẽ chậm. Không giống như DP, không có thủ thuật bạn có thể sử dụng để ẩn các thời gian giao tiếp cần thiết để đồng bộ hóa, điều này là bởi vì chúng ta chỉ có một phần thông tin cho toàn bộ phân lô. Với một phần thông tin này thì không thể tính toán các hoạt động trong lớp tiếp theo và do đó phải chờ đợi để hoàn thành đồng bộ hóa mới đi tiếp bước kế tiếp được.

Làm thế nào những lợi thế và bất cập có thể kết hợp được chỉ ra rõ ràng nhất bởi Alex Krizhevsky người đã chứng minh hiệu quả của việc sử dụng DP trong các lớp tính tích chập và MP trong các lớp dày đặc của một mạng nơ-ron tích chập.

LÀM THẾ NÀO ĐỂ CHẠY SONG SONG HỌC-SÂU (DEEP LEARNING) TRÊN GPU (PHẦN 1)

Phần 1: Dữ liệu song song – Data Parallelism


Trong bài viết trước, tôi đã chỉ ra những gì cần chú ý khi bạn muốn xây dựng một cụm xử lý với nhiều GPU. Quan trọng nhất, bạn sẽ cần một kết nối mạng nhanh giữa các máy chủ và dùng thư viện MPI trong chương trình sẽ giúp đơn giản hóa vượt trội so với sử dụng các tùy chọn sẵn có của CUDA.
Ở bài viết này tôi sẽ giải thích làm thế nào để triển khai thuật toán xử lý song song cho mạng nơ-ron với một cụm GPU theo những cách khác nhau cùng với những lợi thế và bất cập của các thuật toán đó. Có hai hướng triển khai thuật toán khác nhau là xử lý dữ liệu song song (Data Parallelism- DP) hay xử lý mô hình song song (Model Parallelism -MP). Ở bài viết này tôi sẽ tập trung vào DP.
Vậy, hai hướng tiếp cận trên là gì? DP có nghĩa là bạn sử dụng cùng một mô hình giống nhau trên mỗi nhánh xử lý (thread), nhưng cấp cho các nhánh với từng phần khác nhau của cùng một bộ dữ liệu; còn MP thì sử dụng cùng một bộ dữ liệu cho mỗi nhánh, nhưng chia nhỏ mô hình thành các phần xử lý trên các nhánh khác nhau.
Đối với các mạng nơ-ron, điều trên có nghĩa DP sử dụng các trọng số giống nhau và mỗi nhánh xử lý các phân lô khác nhau; sau đó khuynh độ (gradient) cần phải được đồng bộ theo cách trung bình hóa, sau mỗi lần xử lý xong một phân lô.
MP thì chia trọng số của mạng đều ra cho các nhánh xử lý và tất cả các nhánh cùng xử lý trên cùng một phân lô; ở đây kết quả tạo được sau mỗi lớp xử lý cần phải được đồng bộ, theo cách xếp chồng lên nhau, để cung cấp đầu vào cho các lớp xử lý tiếp theo.
Mỗi phương pháp có ưu điểm và nhược điểm của nó, thay đổi theo kiến ​​trúc xử lý. Trước tiên, chúng ta cùng xem xét DP (xử lý dữ liệu song song) với những yếu điểm nghẽn cổ chai của nó, còn trong bài viết tiếp theo, tôi sẽ xét đến xử lý kiểu MP (xử lý mô hình song song).
Điểm chí tử: nút thắt cổ chai mạng trong xử lý dữ liệu song song
Ý tưởng DP khá đơn giản. Ví dụ bạn có 4 GPU, bạn chia một phân lô thành các phần nhỏ cho mỗi GPU, tỉ như, bạn chia một phân lô gồm 128 mẫu thành 32 mẫu cho mỗi GPU. Sau đó, bạn đưa các lô tương ứng qua mạng để có được khuynh độ cho từng phần đó của một lô dữ liệu. Sau đó bạn sử dụng MPI để thu thập tất cả các khuynh độ và cập nhật các thông số với giá trị trung bình tổng.





Sơ đồ xử lý dữ liệu song song DP. Không có giao tiếp bước tiến, còn trong bước lùi thì có đồng bộ hóa khuynh độ.


Vấn đề lớn nhất với phương pháp này là trong bước quy nạp cần phải chuyển toàn bộ khuynh độ sang tất cả các GPU khác. Nếu bạn có một ma trận trọng số 1000 × 1000 thì bạn cần đẩy 4 triệu byte cho mỗi hệ mạng. Nếu chúng ta dùng card mạng 40Gbit/s – cũng thuộc loại khá nhanh – thì cần ít nhất (4.000.000/40) x (1/(40x1024x1024x102)) x 1/(8×1000) = 0,75ms để chuyển dữ liệu giữa 2 nút xử lý cần phải giao tiếp đến được 5 GPU còn lại, 3 trong số đó cần phải đi qua các card mạng (3 x 0.75ms), còn 2 GPU có thể sử dụng PCIe 3.0 để truyền dữ liệu với hai GPU khác (sẽ nhanh hơn khoảng ba lần: 2×0.25ms). Do dữ liệu truyền qua cổng PCIe không liên quan tới card mạng, nên thời gian cần thiết để dữ liệu giữa 2 card mạng quyết định tốc độ chung và cũng đã là 2.25ms. Tất nhiên, chỉ một GPU có thể chuyển dữ liệu thông qua các card mạng tại một thời điểm trong bất kỳ một nút, do đó chúng ta phải nhân thời gian đó lên 3 lần, nghĩa là 7.75ms. Vậy mấu chốt là, chúng ta chỉ cần khoảng 0.2ms cho một ma trận dựng thông qua các lớp (100 × 1000 dot 1000 × 1000) và khoảng gấp đôi để quy nạp. Chúng ta có thể truyền giá trị khuynh độ trong khi chúng ta xử lý ở phân lớp kế tiếp, nhưng rồi thì về tổng thể thì tốc độ card mạng cũng sẽ giới hạn khả năng tính toán của chúng ta tương đối nhiều. Điều này càng rõ với hê thống có quy mô lớn hơn: Một hệ thống bốn nút xử lý trên cùng một bài toán cần khoảng 20.25ms để truyền thông tin khuynh độ đến được các GPU trong hệ thống. Dễ dàng nhận thấy tiếp cận DP không tăng theo được quy mô cụm nút xử lý.
Để giải quyết sự tắc nghẽn này thì phải giảm thiểu các thông số của khuynh độ bằng kỹ thuật tối đa hoá vùng chờ, tối đa số lượng đơn vị ấn định hoặc đơn giản nữa thì dùng tích chập (convolutional). Một cách nữa hướng tới để tăng tỷ lệ thời gian tính toán / thời gian kết mạng bằng các kỹ thuật khác, ví dụ như dùng tính toán tối ưu hóa chuyên sâu như RMSProp. Thời gian dành để chuyển các thông tin khuynh độ với nhau không đổi, nhưng dành được nhiều thời gian dành vào tính toán hơn, do đó tăng hiệu suất của GPU vốn có khả năng tính toán nhanh.
Một điều nữa có thể làm khi sử dụng các kỹ thuật tối ưu hóa tính toán chuyên sâu là làm ẩn đi độ trễ của mạng vào trong quá trình tính toán khuynh độ. Đại ý là cùng lúc bạn đi truyền thông tin khuynh độ đầu tiên cho tất cả các nút khác, bạn cũng đã bắt đầu một tính toán RMSProp lớn không đồng bộ cho lớp kế tiếp. Kỹ thuật này có thể giúp tăng tốc độ lên từ 0-20% tùy thuộc vào kiến ​​trúc mạng.
Nhưng đây không phải là vấn đề duy nhất với xử lý dữ liệu song song. Tồn tại nút thắt cổ chai kỹ thuật ẩn ngay trong kiến ​​trúc GPU khiến tôi mất khá nhiều thời gian để nắm bắt. Để hiểu lý do tại sao các kiến ​​trúc GPU lại thành vấn đề thì trước tiên chúng ta cần phải nhìn vào cách sử dụng và mục đích của việc phân chia dữ liệu thành các phân lô nhỏ.

Phân kỳ: Tại sao cần phân lô dữ liệu?

Nếu chúng ta bắt đầu với các thông số khởi tạo ngẫu nhiên hoặc thậm chí nếu chúng ta bắt đầu với các thông số đã tập huấn máy trước đó, chúng ta không cần phải truyền tất cả các dữ liệu để có được một bản cập nhật chính xác khuynh độ vì kiểu gì chúng cũng sẽ bị giản thiểu cục bộ. Lấy MNIST làm ví dụ, nếu chúng ta có một khuynh độ trong đó bao gồm 10 sai lầm phổ biến mà mạng lọc ra cho mỗi lớp học (kích thước phân lô khoảng 128), thì chúng ta đã đang đi theo hướng làm giảm các lỗi đáng kể vì các lớp khuynh độ lọc bỏ lỗi thô và phổ biến. Nếu chúng ta chọn một kích thước phân lô lớn hơn (512 chẳng hạn) thì chúng ta không chỉ nắm bắt được những lỗi thông thường, nhưng cũng bắt được lỗi tinh vi hơn. Tuy nhiên, lại chả có nghĩa gì khi đi tinh chỉnh một hệ thống mà biết rằng nó vẫn còn đang mắc những lỗi lớn. Vì vậy, nhìn chung chúng ta việc tăng kích cỡ phân lô đạt được hiệu quả rất ít. Chúng ta cần phải tính toán nhiều hơn mà kết quả vẫn gần tương tự và đây là luận điểm chính vì sao chúng ta sử dụng một kích thước phân lô càng nhỏ càng tốt. Tuy nhiên, nếu chúng ta chọn một kích thước phân lô quá nhỏ, thì chúng ta không nắm bắt tất cả những lỗi phổ biến mà có liên quan để toàn tập dữ liệu và do đó khuynh độ của chúng ta không thể đạt được gần mức tối ưu cục bộ, vì vậy cũng có điểm tới hạn dưới cho việc chia các phân lô nhỏ đến mức nào thì vừa.
Tại sao điều này có liên quan đến DP? Nếu chúng ta muốn có một kích thước phân lô 128 và chạy DP để phân chia ra,ví như là, 8 GPU chẳng hạn, sau đó mỗi vòng tính toán giá trị khuynh độ trên 16 mẫu rồi trung bình hóa với các dữ liệu từ GPU khác. Chính đây là trường hợp kẹt phải nút cổ chai của phần cứng.

Mảnh ghép bộ nhớ (Memory tiles): Cấp phát vùng bộ nhớ GPU nhanh để có thể tính tích vô hướng hiệu quả


Để tính tích vô hướng trên GPU, bạn cần phải sao chép vùng nhớ nhỏ, được gọi là mảnh ghép bộ nhớ, vào bộ nhớ đệm dùng chung, vốn là bộ đệm rất nhanh nhưng kích thước rất nhỏ (giới hạn trong một vài kilobyte). Vấn đề là các cuBLAS tiêu chuẩn sử dụng mảng ghép bộ nhớ kích thước 64 hay 128 và khi bạn có một kích thước phân lô dữ liệu ít hơn 64 bạn sẽ lãng phí rất nhiều bộ nhớ dùng chung quý giá ấy. Ngoài ra nếu bạn sử dụng một kích thước phân lô không phải bội số của 32 bạn cũng đang lãng phí bộ nhớ dùng chung cũng theo cách như vậy (dòng xử lý chỉ được kích hoạt theo từng khối gồm 32 dòng xử lý), vì vậy hãy cố gắng sử dụng một kích thước lô là một bội số của 32 hoặc bội số của 64 nếu có thể. Đối với DP thực ra điều này khiến tốc độ xử lý giảm đi đáng kể khi cấp một kích thước phân lô dữ liệu nhỏ hơn 64 cho mỗi GPU. Nếu bạn có nhiều GPU,sẽ thấy rất khó tối ưu và đây là một lý do tại sao các phương pháp tiếp cận DP sẽ dừng lại ở một quy mô tới hạn nhất định.
Túm lại, điều này nghe có vẻ khá nghiêm trọng đối với xử lý dữ liệu song song DP, nhưng DP vẫn có các ứng dụng phù hợp của mình. Chỉ cần hiểu rõ những chỗ thắt cổ chai, bạn có thể ứng dụng linh hoạt DP như một công cụ mạnh vào thực tế. Điều này được minh chứng bởi Alex Krishevsky trong bài báo của mình, khi ứng dụng DP trong các lớp tích chập của Alex, và do đó đạt được sự tăng tốc 3.74x lần bằng nếu chạy trên 4 GPU và 6.25x lần khi chạy trên 8 GPU. Hệ thống của Alex có 2 CPU và 8 GPU trong cùng một máy, vì vậy ông có thể sử dụng tốc độ PCIe đầy đủ cho hai bộ bốn GPU và kết nối PCIe tương đối nhanh chóng giữa các CPU để phân phối dữ liệu lên tất cả 8 GPU.
Bên cạnh mạng nơ-ron tích chập (convolutional neural networks-CNNs), DP còn được dùng trong các mạng nơ-ron tái phát (recurrent neural networks RNNs), vốn yêu cầu ít thông số nhưng cập nhật thông tin khuynh độ tính toán rất lớn – cả hai yếu tố này đều là lợi thế của xử lý dữ liệu song song.

Trong bài blog tiếp theo của tôi, tôi sẽ tập trung vào mô hình xử lý song song MP, hiệu quả cho các mạng nơ-ron lớn và cũng trên quy mô các cụm xử lý lớn hơn.

Thứ Bảy, tháng 12 31, 2016

Người thầy vĩ đại biết cách truyền cảm hứng...

Vẩn vơ, thơ thẩn dịp cuối năm!

Được ông anh dẫn đi thăm một trung tâm đào tạo tiếng Nhật tại Hà Nội mở ra được hơn 2 năm. Nếu thời thượng bây giờ gọi là Start-up giáo dục Ed-tech. Cơ sở không quá khang trang nhưng thực sự ấn tượng về sự quan tâm của các founders đến lề lối sinh hoạt chỉnh chu và nền nếp, tập trung rèn cả ý thức sống. Người Việt sang Nhật du học sinh, kiến tập sinh hay XK lao động cần lắm không chỉ ngôn ngữ để giao tiếp mà trên cả là một ý thức và văn hoá sống cho phù hợp. Từ đấy mới có thể thực sự rèn luyện và phát triển được bản thân trong môi trường nước Nhật (cùng là đi XKLD với nhau để kiếm tiền thì được nhiều tiền hay ít tiền hoá ra bị chi phối lớn bởi ý thức sống này khi ở Nhật, mình thật).





Bất ngờ hơn là vào phòng giáo vụ, tuy còn đơn sơ nhưng có vài dòng chữ chép tay khiến mình có nhiều suy nghĩ:

+ Level 1: Người thầy trung bình chỉ biết nói...
+ Level 2: Người thầy giỏi biết giải thích
+ Level 3: Người thầy xuất chúng biết minh hoạ
+ Level 4: Người thầy vĩ đại biết cách truyền cảm hứng.



Cuối năm nhìn lại công ty 3S với trăm bạn trẻ, háo hứng làm việc, học tập, rèn luyện và kiếm tìm kinh nghiệm lẫn tiền bạc mà vẫn thấy ngỡ ngàng, bấp bênh thế nào ấy. Một mong muốn dang dở của mình cả năm qua là xây dựng văn hoá công ty Learning Company, bất kể vị trí nào, top managers hay cuders cũng luôn luôn thấy đang OJT, luôn luôn cần học tập liên tục, thậm chí tôn thờ life-long learning như một thứ đạo giáo.
Ấy nhưng, có lẽ đang quá nhiều người, đặc biệt ở những vị trí quan trọng tại công ty chỉ biết nói...
Doanh số tăng, tiền tăng nhưng kiến thức không tăng, người đông lên, vật chất nhiều lên nhưng cảm giác công ty có tý nghèo đi thế nào ấy.

Tâm sự vài dòng cuối năm 2016. Sang năm mới 2017, chúc toàn bộ anh chị em 3S chúng ta, ai ai cũng trở thành học trò chăm chỉ, ai ai cũng nỗ lực phấn đấu thành người thầy giỏi, từ level 2 trở lên nhé.

18.00, 31/12/2016