December 23, 2021 thuongqth

Có gì mới ở TensorFlow 2.7?

TensorFlow là một nền tảng mã nguồn mở end-to-end dành cho học máy. Nó có một hệ sinh thái toàn diện, linh hoạt gồm các công cụ, thư viện và tài nguyên cộng đồng cho phép các nhà nghiên cứu thúc đẩy tính năng hiện đại nhất trong ML và các nhà phát triển dễ dàng xây dựng và triển khai các ứng dụng hỗ trợ ML.

TensorFlow 2.7 được phát hành và cải thiện khả năng sử dụng với các thông báo lỗi rõ ràng hơn, stack traces được đơn giản hóa và thêm các công cụ và tài liệu mới cho người dùng chuyển sang TF2.

Cải thiện trải nghiệm gỡ lỗi trong TensorFlow 2.7

Quá trình gỡ lỗi mã của bạn là một phần cơ bản trong trải nghiệm người dùng của một khuôn khổ học máy. Trong bản phát hành này, TensorFlow đã cải thiện đáng kể trải nghiệm gỡ lỗi TensorFlow để làm cho nó hiệu quả hơn và thú vị hơn, thông qua ba thay đổi chính: dấu vết ngăn xếp được đơn giản hóa, hiển thị thông tin ngữ cảnh bổ sung trong các lỗi bắt nguồn từ các lớp Keras tùy chỉnh và kiểm tra trên phạm vi rộng của tất cả các thông báo lỗi trong Keras và TensorFlow.

TensorFlow 2.7 đơn giản hóa stack trace

TensorFlow hiện đang lọc theo stack trace mặc định được hiển thị khi có lỗi để ẩn bất kỳ khung nào bắt nguồn từ mã TensorFlow-internal và giữ cho thông tin tập trung vào những gì quan trọng với bạn: mã của riêng bạn. Điều này làm cho stack traces đơn giản hơn và ngắn hơn, đồng thời giúp bạn hiểu và khắc phục các sự cố trong mã của mình dễ dàng hơn.

Nếu bạn thực sự đang gỡ lỗi chính cơ sở mã TensorFlow (ví dụ: vì bạn đang chuẩn bị PR cho TensorFlow), bạn có thể tắt cơ chế lọc bằng cách gọi

tf.debugging.disable_traceback_filtering().

Tự động chèn ngữ cảnh cho các trường hợp ngoại lệ của lớp Keras

Một trong những trường hợp sử dụng phổ biến nhất để viết mã cấp thấp là tạo các lớp Keras tùy chỉnh, vì vậy chúng tôi muốn làm cho việc gỡ lỗi các lớp của bạn trở nên dễ dàng và hiệu quả nhất có thể. Điều đầu tiên bạn làm khi gỡ lỗi một lớp là in các hình dạng và kiểu của các đầu vào của nó, cũng như giá trị của các đối số training và mask của nó. Bây giờ chúng tôi tự động thêm thông tin này vào tất cả các stack trace bắt nguồn từ các lớp Keras tùy chỉnh.

Xem tác dụng của lọc stack trace và hiển thị thông tin ngữ cảnh thực tế trong hình ảnh bên dưới:

 

Kiểm tra và cải thiện tất cả các thông báo lỗi trong cơ sở mã TensorFlow 2.7 và Keras

Cuối cùng, chúng tôi đã kiểm tra mọi thông báo lỗi trong cơ sở mã Keras và TensorFlow (hàng nghìn vị trí lỗi!) Và cải thiện chúng để đảm bảo chúng tuân theo các phương pháp hay nhất về UX. Một thông báo lỗi tốt sẽ cho bạn biết những gì mà khuôn khổ mong đợi, những gì bạn đã làm không phù hợp với kỳ vọng của khuôn khổ và nên cung cấp các mẹo để khắc phục sự cố.

Cải thiện thông báo lỗi tf.Function

Chúng tôi đã cải thiện hai loại thông báo lỗi tf.function phổ biến: thông báo lỗi thời gian chạy và thông báo lỗi tensor “Graph”, bằng cách bao gồm các dấu vết trỏ đến nguồn lỗi trong mã người dùng. Đối với các thông báo lỗi tf.function mơ hồ và không chính xác khác, chúng tôi cũng đã cập nhật chúng để rõ ràng và chính xác hơn.

Đối với thông báo lỗi thời gian chạy do mã người dùng

@tf.function
def f():
l = tf.range(tf.random.uniform((), minval=1, maxval=10, dtype=tf.int32))
return l[20]

Bản tóm tắt của thông báo lỗi cũ trông như thế này

# … Python stack trace of the function call …

InvalidArgumentError:  slice index 20 of dimension 0 out of bounds.
         [[node strided_slice (defined at <'ipython-input-8-250c76a76c0e'>:5) ]] [Op:__inference_f_75]

Errors may have originated from an input operation.
Input Source operations connected to node strided_slice:
 range (defined at <ipython-input-8-250c76a76c0e >':4)

Function call stack:
f

Bản tóm tắt của thông báo lỗi mới trông như thế này

# … Python stack trace of the function call …

InvalidArgumentError: slice index 20 of dimension 0 out of bounds.
[[node strided_slice
(defined at <ipython-input-3-250c76a76c0e>:5)
]] [Op:__inference_f_15]

Errors may have originated from an input operation.
Input Source operations connected to node strided_slice:
In[0] range (defined at <ipython-input-3-250c76a76c0e>:4)
In[1] strided_slice/stack:
In[2] strided_slice/stack_1:
In[3] strided_slice/stack_2:

Operation defined at: (most recent call last)
# … Stack trace of the error within the function …
>>> File "<ipython-input-3-250c76a76c0e>", line 7, in <module>
>>> f()
>>>
>>> File "<ipython-input-3-250c76a76c0e>", line 5, in f
>>> return l[20]
>>>

Sự khác biệt chính là lỗi thời gian chạy được phát sinh trong khi thực thi  tf.funtion hiện bao gồm stack trace hiển thị nguồn gốc của lỗi, trong mã của người dùng.

# … Original error message and information …
# … More stack frames …
>>>   File "<ipython-input-3-250c76a76c0e>", line 7, in <module>
>>>     f()
>>> 
>>>   File "<ipython-input-3-250c76a76c0e>", line 5, in f
>>>     return l[20]
>>> 

For the “Graph” tensor error messages caused by the following user code

x = None

@tf.function
def leaky_function(a):
 global x
 x = a + 1  # Bad - leaks local tensor
 return a + 2

@tf.function
def captures_leaked_tensor(b):
 b += x
 return b

leaky_function(tf.constant(1))
captures_leaked_tensor(tf.constant(2))

Di chuyển TF2 dễ dàng hơn!

Để hỗ trợ người dùng quan tâm đến việc di chuyển khối lượng công việc của họ từ TF1 sang TF2, chúng tôi đã tạo tab Di chuyển sang TF2 mới trên trang web TensorFlow, bao gồm các hướng dẫn cập nhật và tài liệu hoàn toàn mới với các ví dụ cụ thể, có thể chạy được trong Colab.

Một công cụ shim mới đã được thêm vào, giúp giảm đáng kể việc di chuyển các mô hình dựa trên biến_kinh sang TF2. Nó dự kiến sẽ cho phép hầu hết người dùng TF1 chạy các kiến trúc mô hình hiện có (hoặc chỉ với những điều chỉnh nhỏ) trong đường ống TF2 mà không cần phải viết lại mã mô hình của bạn. Bạn có thể tìm hiểu thêm về nó trong hướng dẫn lập bản đồ mô hình.

Các mô hình mới do cộng đồng đóng góp trên TensorFlow Hub

Kể từ lần phát hành TensorFlow gần đây nhất, cộng đồng đã thực sự đến với nhau để cung cấp nhiều mô hình mới trên TensorFlow Hub. Giờ đây, bạn có thể tìm thấy các mô hình như MLP-Mixer, Vision Transformers, Wav2Vec2, RoBERTa, ConvMixer, DistillBERT, YoloV5 và nhiều mô hình khác. Tất cả các mô hình này đã sẵn sàng để sử dụng thông qua TensorFlow Hub. Bạn có thể tìm hiểu thêm về cách xuất bản các mô hình của mình tại đây.

Kết luận

Tại iRender, chúng tôi cung cấp giải pháp nhanh chóng, mạnh mẽ và hiệu quả cho người dùng Deep Learning với cấu hình gói từ 1 đến 6 GPU RTX 3090 trên cả hai hệ điều hành Windows và Ubuntu. Ngoài ra, chúng tôi còn có GPU cấu hình gói từ 1 RTX 3090 và 8 x RTX 3090. Với dịch vụ hỗ trợ chuyên nghiệp 24/7, công cụ lưu trữ và truyền dữ liệu mạnh mẽ, miễn phí và tiện lợi – GPUhub Sync, cùng với chi phí phải chăng giúp công việc quả bạn hiệu quả hơn.

Đăng ký tài khoản ngay hôm nay để trải nghiệm dịch vụ của chúng tôi. Hoặc liên hệ với chúng tôi, tôi thông qua Zalo: (+84) 912 785 500 để được tư vấn và hỗ trợ.

Nguồn tham khảo: Tensorflow.com
, , , , , , , , , , , , , ,

thuongqth

Xin chào mọi người. Mình là Thương- Nhân viên hỗ trợ khách hàng tại iRender Việt Nam. Mình mong có thể chia sẻ những kiến thức hữu ích mà mình học được trong quá trình làm việc với các 3D artist tới tất cả mọi người.
Contact

INTEGRATIONS

Autodesk Maya
Autodesk 3DS Max
Blender
Cinema 4D
Houdini
Maxwell
Nvidia Iray
Lumion
KeyShot
UE4
Twinmotion
Redshift
Octane
And many more…

iRENDER TEAM

MONDAY – SUNDAY
9:00 AM – 8:00 PM
Hotline: 0916 806 116
Zalo: 0916 806 116
Skype: iRender Support
Email: [email protected]
CÔNG TY CỔ PHẦN CÔNG NGHỆ IRENDER VIỆT NAM
MST: 0108787752
Office: 5/82 Dịch Vọng Hậu, Cầu Giấy, Hà Nội.

Contact
0916806116