Tổng quan về tính toán

Earth Engine được xây dựng dựa trên các công cụ và dịch vụ của Google để thực hiện các phép tính trên quy mô lớn. Để giúp bạn dễ dàng chạy các bản phân tích không gian địa lý lớn, nền tảng và API Earth Engine ẩn đi phần lớn sự phức tạp của cơ sở hạ tầng xử lý song song cơ bản.

EECU

Tổng quan

Đơn vị điện toán Earth Engine (EECU) là một cơ chế để biểu thị lượng sức mạnh xử lý tức thời. Earth Engine theo dõi tổng mức sử dụng tài nguyên điện toán của các tác vụ dưới dạng hàm của mức sử dụng EECU theo thời gian (EECU-giây, EECU-giờ, v.v.). Vì Google có nhiều loại lõi bộ xử lý, kiến trúc, v.v. khác nhau, EECU là một khái niệm trừu tượng hữu ích khi nói về sức mạnh tính toán.

Động lực

Người dùng EE thường muốn ước tính lượng sức mạnh xử lý cần thiết cho quy trình công việc của họ và EECU cung cấp một chỉ số nhất quán để so sánh.

So sánh với các chỉ số về CPU

Số lượng, loại và cấu trúc của các máy xử lý một kết quả cụ thể có thể thay đổi theo thời gian. Vì các lõi vật lý khác nhau có thể có các đặc điểm hiệu suất khác nhau, nên Earth Engine tóm tắt tất cả quá trình xử lý bằng EECU. Một giờ EECU (hoặc bất kỳ đơn vị thời gian EECU nào khác) không tương ứng với thời gian trên đồng hồ treo tường, vì vậy, một công việc tiêu tốn 10 giờ EECU có thể có thời gian chạy quan sát được chỉ vài phút.

Tính ổn định và khả năng dự đoán

Đôi khi, việc gửi cùng một yêu cầu (hoặc yêu cầu tương tự) đến Earth Engine có thể dẫn đến lượng tính toán rất khác nhau. Sau đây là những yếu tố phổ biến dẫn đến sự khác biệt:

  • lưu vào bộ nhớ đệm, chẳng hạn như sử dụng lại kết quả của các phép tính trước đó (bao gồm cả kết quả một phần hoặc kết quả trung gian)
  • dữ liệu cơ bản khác nhau, chẳng hạn như số lượng hình ảnh vệ tinh khác nhau, hình học có độ phức tạp khác nhau, v.v.
  • thay đổi thuật toán trên nền tảng EE, bao gồm cả việc tối ưu hoá hiệu suất, sửa lỗi, v.v.
  • thay đổi đối với thư viện ứng dụng, đặc biệt nếu bạn phụ thuộc vào mã hoặc gói EE của người dùng khác

Điểm chuẩn

Khám phá điểm chuẩn tính toán mẫu của Earth Engine.

Chỉ số cho các yêu cầu không thực hiện được

Earth Engine không cung cấp chỉ số hiệu suất cho các yêu cầu/tác vụ không thành công, vì những con số này sẽ không chính xác hoặc gây hiểu lầm. Ví dụ: nếu một công việc không thành công do tác vụ của trình thực thi không phản hồi, thì mức tiêu thụ xử lý của trình thực thi đó sẽ không được tính vào tổng mức tiêu thụ.

Trình phân tích tài nguyên

Trình phân tích tài nguyên cung cấp thông tin về thời gian EECU và mức sử dụng bộ nhớ (theo thuật toán và tài sản) từ phép tính được thực hiện khi trình phân tích tài nguyên được bật. Mỗi hàng trong kết quả của trình phân tích tài nguyên tương ứng với một thuật toán, phép tính, tải tài sản hoặc hoạt động hao tổn như mô tả trong cột "Mô tả". Các cột trong trình phân tích tài nguyên là:

Mô tả
Nội dung mô tả bằng văn bản về phép tính, thuật toán, tải thành phần hoặc thao tác hao tổn đang được phân tích tài nguyên.
Số lượt
Một chỉ báo tỷ lệ thuận với số lần thao tác được mô tả trong phần "Mô tả" được gọi.
Điện toán
Chỉ báo về thời gian EECU mà(các) thao tác sử dụng.
Bộ nhớ hiện tại

Cột này chỉ xuất hiện nếu có lỗi vì tập lệnh

đã sử dụng quá nhiều bộ nhớ. Thông tin này cho biết dung lượng bộ nhớ đang được sử dụng trên một nút điện toán tại thời điểm xảy ra lỗi.

Bộ nhớ cao nhất

Bộ nhớ tối đa được sử dụng trên một nút điện toán bất kỳ cho thao tác này.

Bật trình phân tích

Trình soạn thảo mã

Sử dụng nút "Run with Profiler" (Chạy bằng Trình phân tích tài nguyên), như mô tả trong hướng dẫn về Trình soạn thảo mã.

Python

Thêm mã sau vào tập lệnh Python để bật trình phân tích tài nguyên:

with ee.profilePrinting():
   print(ee.Number(3.14).add(0.00159).getInfo())

Hồ sơ sẽ được in khi bối cảnh kết thúc, bất kể có lỗi nào xảy ra trong bối cảnh hay không.

Để ghi lại hồ sơ dưới dạng chuỗi, hãy ghi hồ sơ vào vùng đệm chuỗi:

import io

out = io.StringIO()
with ee.profilePrinting(destination=out) as p:
    print(ee.Number(3.14).add(0.00159).getInfo())

print('Output:')
print(out.getvalue())

Dưới đây là đề xuất về cách chuyển chuỗi hồ sơ thành bảng để phân tích dễ dàng hơn trong Colab và Jupyter Notebook (lưu ý rằng đây chỉ là một phương pháp và có thể không phù hợp với mọi trường hợp):

import re
import pandas as pd

lines = out.getvalue().split('\n')

column_names = re.split(r'\s{1,}', lines[0])
column_names = [name.strip() for name in column_names if name.strip()]

data = [
    [element for element in re.split(r'\s{2,}', line) if element.strip()]
    for line in lines[1:-1]
]

df = pd.DataFrame(data, columns=column_names)
display(df)