# Practical Deep Learning for Coders: 9 bài học để đi từ code đến mô hình chạy được

> Khoá học miễn phí của Jeremy Howard cho bạn chạy một mô hình trên dữ liệu thật ngay từ bài đầu, rồi mới dẫn bạn đi sâu vào lý thuyết.

Bản gốc: https://fdetimes.net/vi/sach-khoa-hoc/khoa-hoc-practical-deep-learning-for-coders-fast-ai/

Bài học đầu tiên của Practical Deep Learning for Coders không mở bằng đạo hàm hay ma trận. Nó mở bằng một notebook trên Kaggle tên là "Is it a bird? Creating a model from your own data", tức là tự dựng một mô hình nhận diện chim từ dữ liệu do chính bạn thu thập.

Thứ tự đó chính là triết lý của khoá học. Với một developer muốn làm FDE, đây cũng là cách làm việc bạn sẽ cần ở khách hàng: có một thứ chạy được trên dữ liệu thật trước, rồi mới giải thích và tinh chỉnh.

## Ai làm khoá này, và nó đòi hỏi gì ở bạn?

Khoá học do fast.ai cung cấp. Tổ chức này do Jeremy Howard và Rachel Thomas đồng sáng lập. Trang course.fast.ai mô tả đây là khoá miễn phí dành cho người đã có kinh nghiệm viết code. Phiên bản đang hiển thị là Practical Deep Learning for Coders 2022, part 1, gồm 9 bài, mỗi bài khoảng 90 phút, tổng cộng khoảng 13 tiếng rưỡi video.

Điều kiện đầu vào thấp đến bất ngờ. Bạn chỉ cần biết lập trình, và theo trang khoá học thì một năm kinh nghiệm là đủ. Khoá không đòi toán đại học.

Bạn cũng không cần mua GPU. Notebook chính của bài 1 chạy trên Kaggle. Còn sách đồng hành thì có notebook mở được trên Google Colab mà không phải cài môi trường.

## Vì sao học từ trên xuống lại hợp với FDE?

Jeremy Howard viết rằng ông bắt đầu bằng việc cho người học dùng một mạng deep learning hoàn chỉnh, chạy được, dùng được ngay và thuộc hàng tốt nhất hiện có. Sau đó ông mới đi sâu dần vào bên trong. Trang khoá học nói thẳng nguyên tắc thứ hai: họ luôn dạy qua ví dụ thay vì ký hiệu đại số.

Hãy hình dung tình huống sau. Một nhà máy muốn biết AI có phát hiện được sản phẩm lỗi qua ảnh chụp hay không. Một kỹ sư học theo lối bottom-up sẽ mất vài tuần ôn lý thuyết rồi mới dám đụng vào dữ liệu.

Người đã làm bài 1 của fast.ai sẽ nhận ra cấu trúc quen thuộc: hai loại ảnh, "lỗi" và "không lỗi", thay cho "chim" và "không phải chim".

Buổi demo đầu tiên vì thế có thể diễn ra trong vài ngày chứ không phải vài tuần. Và nó chạy trên ảnh của chính khách hàng, chứ không phải bộ dữ liệu mẫu.

**Điểm mấu chốt:** Có mô hình chạy được trước, rồi mới đào sâu vào từng lớp bên trong.

Đó là khác biệt giữa học ML để thi và học ML để triển khai. Ở giai đoạn prototype, một mô hình chạy trên ảnh của chính khách hàng thường thuyết phục hơn mọi công thức, và khoá học rèn đúng phản xạ ấy.

Nguyên tắc dạy qua ví dụ cũng dùng được khi bạn trình bày kết quả. Với một trưởng phòng vận hành, năm ảnh mô hình đoán đúng và năm ảnh đoán sai thường dễ hiểu hơn mọi biểu đồ loss.

## Học theo thứ tự nào thì không bị ngợp?

Lộ trình hợp lý có ba bước. Bước một là Part 1, đi lần lượt 9 bài và chạy lại mọi notebook. Bước hai là sách đồng hành chính thức, "Deep Learning for Coders with Fastai and PyTorch: AI Applications Without a PhD" của Jeremy Howard và Sylvain Gugger, do O'Reilly xuất bản năm 2020.

Notebook của sách là nền tảng cho khoá học, và các tác giả công khai miễn phí trên GitHub tại kho fastai/fastbook.

Cuốn sách ra đời trong một đợt phát hành lớn: ngày 21/8/2020, fast.ai công bố cùng lúc bản khoá học 2020, thư viện fastai v2 và một cuốn sách 600 trang. Đọc sách song song với video giúp bạn có bản chữ để tra lại, điều mà video 90 phút khó làm được.

Bước ba, chỉ khi đã thật sự vững, là Part 2: "From Deep Learning Foundations to Stable Diffusion".

Phần này phát hành miễn phí ngày 4/4/2023, với hơn 30 giờ video, và dạy tự cài đặt thuật toán Stable Diffusion từ đầu. fast.ai nói rõ rằng để học Part 2 hiệu quả, bạn nên là người làm deep learning khá tự tin. Vì thế, Part 1 là bước đệm không nên bỏ qua.

Một lịch gợi ý cho người đi làm: tuần đầu chỉ dành cho bài 1 và việc thay dữ liệu của bạn vào notebook. Ba tuần sau đi hết bài 2 đến bài 9, hai đến ba bài mỗi tuần. Hai tuần tiếp theo đọc lại các chương sách tương ứng trên Colab, rồi dành hai tuần cuối cho một dự án nhỏ.

Nếu mục tiêu của bạn là vị trí FDE trong vòng sáu tháng, Part 1 cộng với sách là đủ cho phần nền. Part 2 hợp với người muốn hiểu sâu mô hình sinh, hoặc đang nhắm tới các công ty xây sản phẩm quanh mô hình ảnh.

## Những lỗi khiến khoá học mất tác dụng

Lỗi phổ biến nhất là nhảy sang Part 2 quá sớm vì Stable Diffusion nghe hấp dẫn hơn phân loại ảnh chim. Chính fast.ai đã đặt điều kiện là bạn phải khá tự tin với deep learning; bỏ qua điều kiện đó, bạn sẽ chép code mà không hiểu vì sao nó chạy.

Lỗi thứ hai là chỉ bấm chạy notebook từ đầu đến cuối rồi coi như đã học. Tên notebook đầu tiên đã nói rõ: tạo mô hình từ dữ liệu của chính bạn. Nếu chưa từng thay dữ liệu và nhìn mô hình sai ở đâu, bạn mới xem demo chứ chưa làm prototype.

Dữ liệu ở khách hàng hiếm khi sạch như bộ mẫu. Vì thế, tập thu thập, lọc và gán nhãn dữ liệu thật ngay từ lúc học là khoản đầu tư đáng làm.

Lỗi thứ ba là chỉ xem video mà bỏ sách. Video cho bạn nhịp độ, còn notebook của sách cho bạn chỗ để dừng lại, sửa một dòng và xem điều gì thay đổi.

## Biến khoá học thành bằng chứng trong CV

Một chứng chỉ hoàn thành khoá học nói được rất ít về khả năng làm prototype trên dữ liệu thật. Một dự án nhỏ có câu chuyện rõ ràng thì nói được nhiều hơn. Khi đọc JD của vị trí FDE, nếu thấy yêu cầu làm prototype nhanh hay làm việc với dữ liệu khách hàng, dự án đó là câu trả lời trực tiếp.

Hãy lấy notebook bài 1 và thay chim bằng một bài toán gần với doanh nghiệp Việt Nam, chẳng hạn phân loại ảnh hoá đơn hay ảnh nông sản đạt và không đạt chuẩn.

Trong CV, viết một dòng mô tả bạn tự thu thập dữ liệu, dựng mô hình, và phân tích các trường hợp mô hình sai. Dòng đó cho thấy bạn đã đi trọn một vòng prototype trên dữ liệu thật, từ ảnh thô đến mô hình chạy được và biết nó sai ở đâu.

Khoá học không giỏi lý thuyết hơn các giáo trình đại học. Nó có giá trị vì dạy bạn thói quen mà người làm deployment cần nhất: chưa có thứ gì chạy được thì chưa nói chuyện lý thuyết.

**Thử ngay tuần này:**

- Mở notebook Kaggle 'Is it a bird?' của bài 1, chạy hết một lượt rồi thay hai lớp ảnh bằng hai loại ảnh trong một bài toán bạn quan tâm
- Ghi lại trong một trang: dữ liệu lấy từ đâu, mô hình sai ở những ảnh nào, bạn sẽ hỏi khách hàng điều gì tiếp theo
- Mở notebook chương 1 của fastbook trên Google Colab và đối chiếu với bài giảng bạn vừa xem

## Nguồn

- [Practical Deep Learning](https://course.fast.ai/)

- [Practical Deep Learning – Lesson 1](https://course.fast.ai/Lessons/lesson1.html)

- [From Deep Learning Foundations to Stable Diffusion](https://www.fast.ai/posts/2023-04-04-part2-2023.html)

- [fastai/fastbook: The fastai book, published as Jupyter Notebooks](https://github.com/fastai/fastbook)

- [fast.ai – Making neural nets uncool again](https://www.fast.ai/)
