TIL - Làm việc với memory trong RL
TIL
719
White

Tulip4attoo viết ngày 17/11/2018

Sơ qua về câu chuyện

Mình có làm project tạo bot chơi game Pong-v0. Vấn đề đặt ra là mình có làm replay buffer, để agent có thể train với random memory từ trước nữa. Nhưng mà, trong paper Human-level control through deep reinforcement learning của Deepmind (và cả cái tutorial mà mình học theo nữa), họ dùng memory size là 1 triệu. Hmm, theo tính toán, hiện tại với size 600, mình tốn 200MB RAM, tức là để đạt memory size là 1 triệu, mình cần khoảng 300GB RAM. Hmmm.

Note lại là trong bài RL hard, người ta toàn train mấy trăm triệu frames.

Cách giải quyết

Có 2 cách giải quyết mình nghĩ tới:

  • điều chỉnh input khéo hơn:
    • giảm kích cỡ input về 40*40, cũng như điều chỉnh input cho memory khi load, cũng như có thể giảm stack xuống còn 3 --> sẽ x8 được memory size.
    • điều chỉnh type của image, cụ thể float64 --> np.float16, x4 memory size mà không cần điều chỉnh gì nhiều
  • lưu input ra máy và load. Thực ra nên nhớ là các model bt cũng đều load data từ máy lên đó thôi, vài trăm GB ảnh thì đâu có lưu trong RAM.

Tổng kết lại

Đây là 1 vấn đề khó. Cách 1 là giải quyết tạm thời. Cách 2 là xử lý tốt cho sau này, tuy nhiên mình mới đang làm thôi. Note là cách 2 có thể view tốt được data và đảm bảo reproduce kết quả.

Update

Mình mới nhận ra là 8k * 8 * 4 ~ 240k.

240k là 1 con số ổn, có thể so sánh với 1mil. Như vậy, việc áp dụng cả 2 phương pháp ở cách 1 cũng có thể train được ở mức độ vừa phải.

Ưu điểm ở đây là dễ code và máy yếu (4GB RAM) vẫn có thể phà phà chạy tầm 50k, 100k memory size vô tư. Tất nhiên cách 2 vẫn là tối ưu hơn cho máy yếu, nwhng chưa biết tốc độ khi implement sẽ như thế nào, cái này cần thực chiến mới biết được.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Tulip4attoo

11 bài viết.
82 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
31 5
Các bạn có thể đọc các bài còn lại trong series ở đây: + Phần 1: https://kipalog.com/posts/TaobotchoiTRextrongChromephan1Hardcodeversion + Phần 2...
Tulip4attoo viết hơn 1 năm trước
31 5
White
29 4
Bài toán FizzBuzz FizzBuzz vốn là bài toán vui ở Anh để dạy cho cho trẻ con làm quen với phép chia. Sau đó, nó được thay đổi đôi chút để có thể là...
Tulip4attoo viết hơn 2 năm trước
29 4
White
14 0
TensorFlow là một framework về machine learning, đặc biệt chuyên về Deep learning của Google. Nếu chưa biết về TensorFlow, bạn có thể coi giới thiệ...
Tulip4attoo viết 1 năm trước
14 0
Bài viết liên quan
White
0 4
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết hơn 1 năm trước
0 4
White
2 0
I used Spring boot, Hibernate few times back then at University, I'v started using it again recently. In this (Link), I want to check how Spring J...
Rey viết 8 tháng trước
2 0
White
22 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết gần 3 năm trước
22 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
11 bài viết.
82 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!