Thanks for tuning in to Google I/O. View all sessions on demandWatch on demand

Đóng góp vào mã TensorFlow

Cho dù bạn đang thêm một hàm mất mát, cải thiện phạm vi kiểm tra hay viết RFC cho một thay đổi lớn về thiết kế, phần này của hướng dẫn dành cho cộng tác viên sẽ giúp bạn bắt đầu. Cảm ơn bạn đã làm việc và quan tâm đến việc cải thiện TensorFlow.

Trước khi bạn bắt đầu

Trước khi bạn đóng góp mã nguồn cho dự án TensorFlow, vui lòng xem lại tệp CONTRIBUTING.md trong kho GitHub của dự án. Ví dụ: hãy xem tệp CONTRIBUTING.md trong repo TensorFlow cốt lõi. Tất cả những người đóng góp mã được yêu cầu ký Thỏa thuận cấp phép cộng tác viên (CLA).

Để tránh trùng lặp công việc, vui lòng xem lại các RFC hiện tại hoặc được đề xuất và liên hệ với các nhà phát triển trên diễn đàn TensorFlow ( Develop@tensorflow.org ) trước khi bạn bắt đầu làm việc với một tính năng không tầm thường. Chúng tôi có phần chọn lọc khi quyết định thêm chức năng mới và cách tốt nhất để đóng góp và giúp đỡ dự án là giải quyết các vấn đề đã biết.

Vấn đề dành cho cộng tác viên mới

Các cộng tác viên mới nên tìm các thẻ sau khi tìm kiếm đóng góp đầu tiên cho cơ sở mã TensorFlow. Chúng tôi đặc biệt khuyên các cộng tác viên mới nên giải quyết các dự án “vấn đề đầu tiên tốt” và “hoan nghênh các đóng góp” trước; điều này giúp người đóng góp quen thuộc với quy trình đóng góp và để các nhà phát triển cốt lõi làm quen với người đóng góp.

Nếu bạn quan tâm đến việc tuyển dụng một nhóm để giúp giải quyết một vấn đề quy mô lớn hoặc một tính năng mới, vui lòng gửi email cho các nhà phát triển @ group và xem lại danh sách RFC hiện tại của chúng tôi.

Đánh giá mã

Các tính năng mới, sửa lỗi và bất kỳ thay đổi nào khác đối với cơ sở mã đều phải được xem xét mã.

Xem xét mã đóng góp cho dự án vì các yêu cầu kéo là một thành phần quan trọng của quá trình phát triển TensorFlow. Chúng tôi khuyến khích mọi người bắt đầu xem xét mã do các nhà phát triển khác gửi, đặc biệt nếu tính năng này là thứ mà bạn có khả năng sử dụng.

Dưới đây là một số câu hỏi cần lưu ý trong quá trình xem xét mã:

  • Chúng ta có muốn điều này trong TensorFlow không? Nó có khả năng được sử dụng không? Bạn, với tư cách là người dùng TensorFlow, có thích sự thay đổi này và có ý định sử dụng nó không? Thay đổi này có nằm trong phạm vi của TensorFlow không? Chi phí duy trì một tính năng mới có xứng đáng với lợi ích của nó không?
  • Mã có nhất quán với API TensorFlow không? Các hàm, lớp và tham số công cộng có được đặt tên tốt và được thiết kế trực quan không?
  • Nó có bao gồm tài liệu không? Tất cả các hàm công khai, lớp, tham số, kiểu trả về và thuộc tính được lưu trữ có được đặt tên theo quy ước TensorFlow và được ghi lại rõ ràng không? Chức năng mới có được mô tả trong tài liệu của TensorFlow và được minh họa bằng các ví dụ, bất cứ khi nào có thể không? Tài liệu có hiển thị đúng cách không?

  • Con người có thể đọc được mã không? Nó có ít dự phòng không? Tên biến có nên được cải thiện để rõ ràng hoặc nhất quán? Có nên thêm ý kiến ​​không? Có nên xóa bất kỳ nhận xét nào là không hữu ích hoặc không liên quan không?

  • Mã có hiệu quả không? Nó có thể được viết lại dễ dàng để chạy hiệu quả hơn không?

  • Mã có tương thích ngược với các phiên bản trước của TensorFlow không?

  • Mã mới có thêm các phụ thuộc mới vào các thư viện khác không?

Kiểm tra và cải thiện phạm vi kiểm tra

Kiểm tra đơn vị chất lượng cao là một nền tảng của quá trình phát triển TensorFlow. Với mục đích này, chúng tôi sử dụng hình ảnh Docker. Các hàm kiểm tra được đặt tên thích hợp, và có nhiệm vụ kiểm tra tính hợp lệ của các thuật toán cũng như các tùy chọn khác nhau của mã.

Tất cả các tính năng mới và các bản sửa lỗi phải bao gồm phạm vi kiểm tra thích hợp. Chúng tôi cũng hoan nghênh những đóng góp của các trường hợp thử nghiệm mới hoặc các cải tiến cho các thử nghiệm hiện có. Nếu bạn phát hiện ra rằng các thử nghiệm hiện có của chúng tôi chưa hoàn tất - ngay cả khi điều đó hiện không gây ra lỗi - vui lòng gửi sự cố và nếu có thể, hãy yêu cầu kéo.

Để biết chi tiết cụ thể về quy trình kiểm tra trong từng dự án TensorFlow, hãy xem tệp README.mdCONTRIBUTING.md trong kho dự án trên GitHub.

Đặc biệt quan tâm đến việc kiểm tra đầy đủ :

  • Mọi chức năng và lớp công khai có được kiểm tra không?
  • Một bộ thông số hợp lý , giá trị, kiểu giá trị và kết hợp của chúng có được kiểm tra không?
  • Các bài kiểm tra có xác nhận rằng mã là chính xác và nó đang thực hiện những gì tài liệu cho biết mã dự định làm không?
  • Nếu thay đổi là một bản sửa lỗi, thì kiểm tra không hồi quy có được bao gồm không?
  • Các bài kiểm tra có vượt qua được việc xây dựng tích hợp liên tục không?
  • Các bài kiểm tra có bao gồm mọi dòng mã không? Nếu không, các ngoại lệ có hợp lý và rõ ràng không?

Nếu bạn thấy bất kỳ vấn đề nào, vui lòng xem xét giúp người đóng góp hiểu những vấn đề đó và giải quyết chúng.

Cải thiện thông báo lỗi hoặc nhật ký

Chúng tôi hoan nghênh những đóng góp cải thiện thông báo lỗi và ghi nhật ký.

Quy trình đóng góp

Đóng góp mã — sửa lỗi, phát triển mới, cải tiến thử nghiệm — tất cả đều tuân theo quy trình làm việc lấy GitHub làm trung tâm. Để tham gia phát triển TensorFlow, hãy thiết lập tài khoản GitHub. Sau đó:

  1. Fork repo mà bạn định làm. Đi tới trang repo của dự án và sử dụng nút Fork . Thao tác này sẽ tạo một bản sao của repo, dưới tên người dùng của bạn. (Để biết thêm chi tiết về cách tách một kho lưu trữ, hãy xem hướng dẫn này .)

  2. Sao chép repo vào hệ thống cục bộ của bạn.

    $ git clone git@github.com:your-user-name/project-name.git

  3. Tạo một chi nhánh mới để lưu giữ công việc của bạn.

    $ git checkout -b new-branch-name

  4. Làm việc trên mã mới của bạn. Viết và chạy thử nghiệm.

  5. Cam kết các thay đổi của bạn.

    $ git add -A

    $ git commit -m "commit message here"

  6. Đẩy các thay đổi của bạn lên repo GitHub của bạn.

    $ git push origin branch-name

  7. Mở Yêu cầu kéo (PR). Chuyển đến kho dự án gốc trên GitHub. Sẽ có một thông báo về nhánh được đẩy gần đây của bạn, hỏi bạn có muốn mở một yêu cầu kéo hay không. Làm theo lời nhắc, so sánh giữa các kho và gửi bài PR. Điều này sẽ gửi một email đến những người cam kết. Bạn có thể muốn xem xét việc gửi một email vào danh sách gửi thư để có nhiều khả năng hiển thị hơn. (Để biết thêm chi tiết, hãy xem hướng dẫn GitHub về PR .

  8. Những người bảo trì và những người đóng góp khác sẽ xem xét bài PR của bạn . Vui lòng tham gia vào cuộc trò chuyện và cố gắng thực hiện bất kỳ thay đổi nào được yêu cầu . Sau khi PR được chấp thuận, mã sẽ được hợp nhất.

Trước khi thực hiện đóng góp tiếp theo của bạn , hãy đảm bảo rằng kho lưu trữ cục bộ của bạn được cập nhật.

  1. Đặt điều khiển từ xa ngược dòng. (Bạn chỉ phải làm điều này một lần cho mỗi dự án, không phải mọi lúc.)

    $ git remote add upstream git@github.com:tensorflow/project-repo-name

  2. Chuyển sang nhánh chính cục bộ.

    $ git checkout master

  3. Kéo xuống các thay đổi từ ngược dòng.

    $ git pull upstream master

  4. Đẩy các thay đổi vào tài khoản GitHub của bạn. (Tùy chọn, nhưng là một thực hành tốt.)

    $ git push origin master

  5. Tạo một chi nhánh mới nếu bạn đang bắt đầu công việc mới.

    $ git checkout -b branch-name

Tài nguyên git và GitHub bổ sung:

Danh sách kiểm tra cộng tác viên