Thứ Bảy, 9 tháng 10, 2021

linux tricks

  1. kill -9 PID does not release memory
I recently faced this problem. You can see in the below screen, even I used kill -9 2707867, the memory had not been released. I supposed that this process became a zoombie.


Actually, the PID shown (2707867) is the child process of a parent process, which actually was holding the memory. By using this command, I was able to find the parent process ID.


Then, we can just use kill -9 2707866 to get the memory back. Cheers :)


Thứ Sáu, 24 tháng 9, 2021

Jupyter notebook tricks

 1. Merge multiple Jupyter Notebook cells into one

a. Let imagine that you have written thousands line of codes. And suddenly, you want to run the entire cells all over again with just one or two values changed.

Guess what? You will need to scroll up -> change the value -> run the notebook time and time again. The bad thing here is that you need to wait for one loop to finish before manually scrolling up and change the value. 

SUCKS!


So here let's put all the code in a loop by after merging all the cells into one using Shift + M.

Thứ Bảy, 11 tháng 9, 2021

python OOP with pytorch

 1. Diplay properties of an object in python (e.g. DataLoader)

ipdb> dir(train_loader.dataset)
['__add__', '__class__', '__class_getitem__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__len__', '__lt__', '__module__', '__ne__', '__new__', '__orig_bases__', '__parameters__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__slots__', '__str__', '__subclasshook__', '__weakref__', '_format_transform_repr', '_is_protocol', '_repr_indent', 'class_to_idx', 'classes', 'extensions', 'extra_repr', 'find_classes', 'imgs', 'loader', 'make_dataset', 'root', 'samples', 'target_transform', 'targets', 'transform', 'transforms']
ipdb> train_loader.dataset.class_to_idx

Here class_to_idx is a nice property of you want to make sure how ImageFolder assigned unique IDs to your human-readable class IDs.

 2. DataLoader is super slow

Even if I load the data manually, the speedup comes to around 10 times. WTHH??

Thứ Hai, 6 tháng 9, 2021

pytorch frequent errors and solutions

 1. CUDA memory overflow (if you have multiple GPUs)

- If you have multiple GPUs, you are able to run pytorch operations (e.g. toch.argsort) on all of them, not just a single GPU.

- Let's take this snippet as an example:








Ok, for each 800 input samples, I sent the batch to another CPU with a specified ID by the batch_idx. 

2. Load a Python object saved to GPU to CPU

- I did a stupid job when I saved a dictionary containing some GPU tensors to a .npy file. 

- Then when I load the npy file, my GPUs had been dominated and ran out of memory.

- Hell yeah, I googled a lot but not find any solutions to load only a part of the file or load the dictionary directly to CPU.

- Suddenly, I think that, Oh, I can load the dictionary to GPU, then move the tensor back to CPU then overwrite the dictionary. Haha. How smart I am!

Thứ Sáu, 27 tháng 8, 2021

Nhớ nhà 1

 Tôi đã qua Mỹ được 1 tuần, cả 1 tuần chạy tất tả làm mọi giấy tờ. Tôi đã không thực sự thấy  nhà trong tuần vừa qua, nhưng hôm này đây, một ngày chủ nhật thảnh thơi, ngó ra ngoài ban công thật nhiều gió, tôi bỗng thấy nhớ da diết và cảm nhận từng câu chữ của bài Home - Michael Buble. 

Thu đến rồi!

Nắng phai dần, cả màu sắc lẫn sự bỏng rát của nó. Gió hoang hoải thổi qua những khóm hoa trắng nhỏ bên kia đường. Auburn là một thành phố yên bình, ít nhất là khi tôi đang sống. Thỉnh thoảng bên đường, tôi thấy có vài người chạy bộ, một hình ảnh bình thường nhưng nó gợi nhớ về VN trong tôi. Họ chạy bộ vì những con đường là của họ, họ quen những con phố, những giao lộ, và đôi chân đã quen những sỏi đá ở đây. 

Nhưng tôi thấy xa lạ và tự nghĩ chắc mình sẽ chẳng bao giờ bên kia đường và chạy như họ vì vốn dĩ đây không phải là đường của tôi. Liệu những người nước ngoài đến VN và nhìn thấy người Việt chạy bộ ngoài đường, trong công viên có nghĩ giống tôi không nhỉ?

Chủ Nhật, 30 tháng 5, 2021

Những lời ca Ngô Thụy Miên

 Anh từng hát Cho em mùa thu

Trong những đêm ánh trăng vương áo mỏng

Tóc em mềm bay theo chiều gió lộng

Đường anh về, nghe lối cũ lao xao


Em có còn nhớ những ráng chiều

Anh ôm em hát bài Niệm khúc cuối

Dẫu cơn mưa còn về giăng khắp lối

Anh xin đưa em, đến cuối cuộc đời


Hai phương trời, xa cách hai phương trời

Hoa có còn hồng không em? Độ ấy

Tình bơ vơ còn lời gì trăn trối

Gửi về nhau, cho gối mộng bình yên



Thứ Tư, 7 tháng 10, 2020

Tại sao memory bị tràn khi chạy chương trình DL

 Khi chạy chương trình nào, ta chỉ nên chạy chương trình đó thôi.

Ví dụ mình từng mắc 1 lỗi, mình chạy chương trình trên jupyter notebook.

Mình chạy chương trình A, sau đó chạy B, tuy nhiên do A và B dùng chung vài biến toàn cục, mình vẫn để chương trình A ở đó mà không clear đi.

Điều này dẫn đến bộ nhớ khi chạy B sẽ tổng cả 2 của A và B do bộ dọn rác không hoạt động trên A.