Tu Phan · Phần mềm · Machine learning · Nền tảng

Tôi xây dựng phần mềm đáng tin cậy, từ dòng code đầu tiên đến sản phẩm hoàn chỉnh.

Sáu năm với ba mảng công việc: machine learning chạy thật trong môi trường production, sản phẩm full-stack và di động, cùng nền tảng đám mây bên dưới chúng. Tôi là đồng sáng lập kiêm CTO của Body.Scratch, nơi toàn bộ phần kỹ thuật do tôi vận hành, và ZinZinTech là studio đã đăng ký của riêng tôi, nơi tôi thiết kế, xây dựng và phát hành ứng dụng từ đầu đến cuối.

Sẵn sàng nhận vị trí kỹ sư bán thời gian tại Hà Lan. Không cần bảo lãnh lao động.

Giới thiệu

Hồ sơ

Kỹ sư phần mềm với sáu năm kinh nghiệm quốc tế tại sáu quốc gia. Tôi làm việc ở ba tầng của cùng một bài toán: các mô hình, sản phẩm bao quanh chúng, và hạ tầng để chúng chạy. Gần đây nhất, điều đó có nghĩa là các mô hình thị giác máy tính phục vụ lưu lượng thật, một backend Java và Python, cùng một nền tảng Google Cloud mà tôi tiếp quản và một mình vận hành từ đó đến nay. Tôi cũng vận hành ZinZinTech, studio đã đăng ký của riêng tôi, nơi tôi xây dựng và phát hành những ứng dụng mà tôi muốn thấy tồn tại.

Công việc của tôi

Bốn mảng

Machine learning trong môi trường production

Các mô hình thị giác máy tính và xử lý ngôn ngữ tự nhiên phục vụ lưu lượng thật: ước lượng tư thế và phân loại cử chỉ chạy sau gRPC và TensorFlow Serving, các mô hình gradient boosting chấm điểm những phiên đang diễn ra, và một trợ lý LLM cho giáo viên với phần kiểm tra quyền truy cập theo từng học sinh nằm ngay trong lớp công cụ của nó.

  • PyTorch
  • TensorFlow Serving
  • ONNX
  • Vertex AI
  • XGBoost

Nền tảng đám mây và DevOps

Tôi tiếp quản một nền tảng Google Cloud và một mình vận hành nó từ đó đến nay: mười bốn stack Terraform, một cụm GKE, chín Helm chart do tôi viết, và phần middleware tự vận hành bên trên — RabbitMQ, Keycloak, LiveKit, TensorFlow Serving. Chi phí cũng là một phần của công việc: spot pool, node pool tự co về không, chiết khấu cam kết sử dụng, và một công tắc ngắt chi phí do tôi viết.

  • GCP
  • Kubernetes
  • Terraform
  • Helm
  • Cloud Build

Full-stack và di động

Backend production viết bằng Java với Quarkus và Python với FastAPI, giao diện React và TypeScript, cùng một codebase Flutter được phát hành lên năm nền tảng qua sáu quy trình xét duyệt cửa hàng riêng biệt.

  • Java
  • Quarkus
  • FastAPI
  • React
  • TypeScript
  • Flutter

Dữ liệu và pipeline

Xây dựng bộ dữ liệu khi chưa có sẵn: công cụ thu hình đồng bộ nhiều camera, pipeline gán nhãn, và hàng terabyte video được tải lên object storage với một hàng đợi mang các tác vụ ghi hình. Trước đó là Spark, Kafka và Elasticsearch phía sau các mô hình rủi ro tín dụng và phát hiện gian lận mà chúng tôi xây dựng và đánh giá.

  • PostgreSQL
  • RabbitMQ
  • GCS/S3
  • Spark
  • Kafka

Kinh nghiệm

Kinh nghiệm tiêu biểu

Đồng sáng lập & CTO

2023 – nay

Body.Scratch B.V. · Eindhoven, Hà Lan

Toàn bộ phần kỹ thuật là của tôi từ đầu đến cuối: nền tảng Google Cloud, API production, hệ thống thị giác máy tính, và pipeline dữ liệu phía sau nó. Người đồng sáng lập của tôi phụ trách kinh doanh và thiết kế.

  • GCP
  • Kubernetes
  • PyTorch
  • Java/Quarkus
  • FastAPI

Kỹ sư phần mềm (freelance)

10/2025 – 02/2026

Khách hàng thương mại, theo thỏa thuận bảo mật (NDA)

Hệ thống phát hiện vi phạm bản quyền video: embedding transformer được đánh chỉ mục để tìm kiếm tương đồng trên một thư viện tham chiếu, kèm căn chỉnh theo thời gian để xác định đúng đoạn trùng khớp. Chạy trên máy chủ GPU Windows đặt tại chỗ của khách hàng, với người dùng thật.

  • PyTorch
  • FAISS
  • Swin/ViT
  • CLIP

Nghiên cứu viên Thị giác máy tính (luận văn thạc sĩ)

2022 – 2023

Fondazione Bruno Kessler (FBK) · Trento, Ý

Luận văn: Trajectory-based Anomaly Detection for Video Surveillance Analysis. Phát hiện người trong video, rồi phân cụm quỹ đạo của họ để đánh dấu chuyển động bất thường. Công việc này đã được hợp nhất lên nhánh chính của nền tảng phân tích video PROTECTOR.

  • PyTorch
  • Phát hiện bất thường
  • Phát hiện đối tượng
  • Phân cụm quỹ đạo

Kỹ sư phần mềm

2021 – 2022

PipePredict · Darmstadt, Đức

Ứng dụng web dạng bản đồ cho bảo trì dự đoán mạng lưới đường ống nước.

  • React
  • D3.js
  • TypeScript

Trưởng nhóm R&D AI

2019 – 2020

Tima Group · Hà Nội, Việt Nam

Dẫn dắt 5 kỹ sư xây dựng hệ thống OCR và chatbot cùng các mô hình chấm điểm tín dụng và phát hiện gian lận.

  • TensorFlow
  • Spark
  • Kafka
  • scikit-learn

Nghiên cứu viên AI

2018 – 2019

JAVIS · Hà Nội, Việt Nam

Tự động hóa việc tạo bản vẽ CAD 2D và 3D bằng xử lý ảnh.

  • Xử lý ảnh
  • Tự động hóa CAD

Trợ lý nghiên cứu

2018

NTU Singapore · MAGIC

Tôi đã xây dựng cả hai phần của một hệ thống truyền phát hình ảnh thành phố 3D động: máy chủ truyền phát (PHP, Yii2) và máy khách Unity — 120 trong số 132 commit của kho lưu trữ đó — một trình tiêu thụ RabbitMQ bên trong công cụ trò chơi, tải các gói tài nguyên bất đồng bộ và loại bỏ chúng khi camera di chuyển ra xa. CityGML, lập lịch mức độ chi tiết, Berlin và Amsterdam. Hai bài báo được xuất bản, một bài báo xuất sắc nhất tại hội nghị.

  • PHP/Yii2
  • CityGML
  • Máy khách Unity

Trợ lý nghiên cứu

2016 – 2018

SoICT, Đại học Bách khoa Hà Nội · Việt Nam

Tối ưu tổ hợp cho bài toán định tuyến phương tiện và chia sẻ chuyến đi — GRASP và tìm kiếm lân cận lớn thích ứng, trong một thư viện tối ưu viết bằng Java. Hai công bố khoa học, một bài là tác giả chính và do tôi trình bày.

  • Java
  • Tối ưu hóa
  • GRASP / ALNS

Thực tập sinh nghiên cứu (học bổng JASSO)

2017

Nakagawa Laboratory ↗, Đại học Nông nghiệp và Công nghệ Tokyo · Nhật Bản

Học sâu để nhận dạng chữ viết tay trong các thư tịch cổ Nhật Bản, tại nhóm nghiên cứu nhận dạng chữ viết tay của GS. Masaki Nakagawa.

  • VGG
  • Inception-v4
  • Nhận dạng chữ viết tay

Mã nguồn

Công việc tiêu biểu

Các kho mã nguồn công khai. Những kho riêng tư — mã nguồn ứng dụng của Body.Scratch và ZinZinTech, cùng công việc cho khách hàng theo thỏa thuận bảo mật — không được liên kết ở đây, nhưng tôi có thể cùng bạn đi qua bất kỳ kho nào trong số đó.

qa-rewards-abstractive-summarization

Cài đặt lại nghiên cứu của Gunasekara và cộng sự, Findings of EMNLP 2021: học tăng cường với phần thưởng từ hỏi–đáp cho bài toán tóm tắt trừu tượng. GPT-2 và PEGASUS trên XSum, huấn luyện trên một cụm Slurm. Một mô hình chấm điểm đầu ra của một mô hình khác — và điểm số ấy chẳng có ý nghĩa gì cho tới khi nó đồng thuận với con người.

  • PyTorch
  • RL/PPO
  • Transformers
  • Slurm

parallel-datamining-algorithms

k-means viết bằng C và C++ với MPI kết hợp OpenMP: tăng tốc gấp 14.1x ở hiệu suất 88% trên 16 tiến trình, đo bằng MPI_Wtime.

  • C
  • C++
  • MPI
  • OpenMP

football-dialogue-assistant

Hệ thống hội thoại Rasa trên dữ liệu bóng đá trực tiếp — lịch thi đấu, thông tin đội bóng và thống kê cầu thủ lấy từ một API, có nhận đầu vào bằng giọng nói.

  • Rasa
  • NLU
  • MITIE

multi-domain-machine-translation

Các thử nghiệm dịch máy nơ-ron thích ứng theo miền, kèm những script chạy theo lô trên Slurm đã dùng để chạy chúng.

  • Transformers
  • PyTorch
  • Slurm

transformers-text-recognition

Nhận dạng văn bản dựa trên transformer, huấn luyện trên cụm GPU của trường đại học.

  • PyTorch
  • Transformers
  • Slurm

ocr-significance-testing

Kiểm định ý nghĩa thống kê để so sánh các mô hình nhận dạng chữ trong ảnh cảnh vật: khoảng cách giữa hai hệ thống là thật, hay chỉ do tập kiểm thử? Xây dựng trên cài đặt tham chiếu Scene Text Telescope, có ghi nhận nguồn trong kho mã.

  • Thống kê
  • Bootstrap / hoán vị
  • OCR

DINO — thử nghiệm phát hiện đối tượng trên cụm GPU

Một trong bảy codebase phát hiện đối tượng mà tôi đã huấn luyện và tinh chỉnh trong năm 2022-2023 trên một cụm máy dùng chung của trường đại học: các job Slurm tự biên dịch những toán tử CUDA riêng của mô hình ngay bên trong job, tinh chỉnh từ một checkpoint đã phát hành, và ghi log lên Weights & Biases. Mô hình và mã gốc thuộc về các tác giả upstream; README nói rõ chính xác những gì tôi đã thay đổi.

  • PyTorch
  • Slurm
  • CUDA
  • Weights & Biases

protector-project/VideoPlatform — đã hợp nhất upstream

Một pull request đã được hợp nhất trong một kho mã công khai mà tôi không sở hữu: phát hiện bất thường bằng phân cụm quỹ đạo, được tích hợp vào nền tảng phân tích video PROTECTOR. 621 dòng qua bảy commit, được người bảo trì hợp nhất vào tháng 1 năm 2023. Công việc luận văn thạc sĩ của tôi, đáp xuống trong codebase của người khác.

  • PyTorch
  • Phát hiện bất thường
  • Đóng góp upstream

Sản phẩm

Những gì tôi đã xây dựng

Biểu tượng ứng dụng Focus4Life

Focus4Life

Tập trung, dựa trên khoa học.

Một đồng hồ Pomodoro kiêm công cụ lên kế hoạch công việc giúp bạn tập trung mà không thấy áy náy. Vun trồng một vườn thiền trong lúc làm việc, thấy rõ thời gian của bạn thực sự đi đâu — và giữ trọn từng byte dữ liệu trên chính thiết bị của bạn.

Biểu tượng ứng dụng Body.Scratch

Body.Scratch

Học lập trình qua điệu nhảy.

Một nền tảng giáo dục sử dụng trí tuệ nhân tạo dành cho thanh thiếu niên từ 8-16 tuổi học lập trình thông qua các điệu nhảy. Giúp giáo viên thu hút học sinh một cách vui vẻ, lành mạnh và hợp tác.

bodyscratch.academy ↗

Kỹ năng

Bộ công nghệ

Ngôn ngữ

  • Python
  • Java
  • TypeScript
  • JavaScript
  • Dart
  • C/C++
  • SQL
  • R
  • Bash
  • Scala

Machine learning

  • PyTorch
  • TensorFlow
  • Keras
  • scikit-learn
  • XGBoost
  • Transformers
  • MediaPipe
  • ONNX
  • TensorFlow Serving

Đám mây và hạ tầng

  • GCP
  • GKE
  • Cloud Run
  • Cloud SQL
  • Cloud Build
  • Kubernetes
  • Terraform
  • Helm
  • Docker
  • AWS Lambda
  • Linux

Backend và giao tiếp

  • Quarkus
  • FastAPI
  • REST
  • gRPC/protobuf
  • WebSockets
  • RabbitMQ
  • PostgreSQL
  • Redis
  • Elasticsearch

Front-end và di động

  • React
  • TypeScript
  • Flutter
  • Astro
  • D3.js

Dữ liệu và tính toán

  • Spark
  • Kafka
  • FAISS
  • Slurm/PBS
  • MPI/OpenMP
  • Prometheus
  • Grafana

Học vấn

Nền tảng học thuật

Thạc sĩ Khoa học Máy tính Đại học Trento, Ý · 2020 – 2023
Trao đổi, Ngôn ngữ học Máy tính Đại học Heidelberg, Đức · 2021 – 2022
Kỹ sư Khoa học Máy tính Đại học Bách khoa Hà Nội · 2013 – 2018

Liên hệ

Liên hệ với tôi

Tôi sẵn sàng nhận các vị trí kỹ sư bán thời gian tại Hà Lan — machine learning, phần mềm, hoặc nền tảng và DevOps. Cách nhanh nhất để liên hệ là email.

phan.business.nl@gmail.com
Amsterdam, Hà Lan · Giấy phép cư trú Hà Lan cho phép làm việc tự do trên thị trường lao động, không cần bảo lãnh.
Tiếng Anh (ngôn ngữ làm việc) · Tiếng Việt (bản ngữ) · Tiếng Hà Lan (mới bắt đầu).