หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

ถ่ายทอดความหมาย

เอกสารนี้อธิบายถึงความหมายของการกระจายเสียงใน XLA

การออกอากาศคืออะไร

Broadcasting เป็นกระบวนการสร้างอาร์เรย์ที่มีรูปร่างต่างกันซึ่งมีรูปร่างที่เข้ากันได้สำหรับการดำเนินการทางคณิตศาสตร์ คำศัพท์ที่ยืมมาจากการ ออกอากาศ Numpy

การออกอากาศอาจจำเป็นสำหรับการดำเนินการระหว่างอาเรย์หลายมิติของอันดับที่แตกต่างกันหรือระหว่างอาเรย์หลายมิติที่มีรูปร่างต่างกัน แต่เข้ากันได้ พิจารณาการเพิ่ม X+v โดยที่ X คือเมทริกซ์ (อาร์เรย์ของอันดับ 2) และ v เป็นเวกเตอร์ (อาร์เรย์ของอันดับ 1) เพื่อทำการเพิ่มองค์ประกอบที่ชาญฉลาด XLA จำเป็นต้อง "กระจาย" เวกเตอร์ v ให้อยู่ในระดับเดียวกันกับเมทริกซ์ X โดยการจำลอง v จำนวนครั้งที่แน่นอน ความยาวของเวกเตอร์ต้องจับคู่อย่างน้อยหนึ่งมิติของเมทริกซ์

ตัวอย่างเช่น:

 |1 2 3| + |7 8 9|
|4 5 6|
 

ขนาดของเมทริกซ์คือ (2,3), เวกเตอร์คือ (3) เวกเตอร์ออกอากาศโดยจำลองข้ามแถวเพื่อรับ:

 |1 2 3| + |7 8 9| = |8  10 12|
|4 5 6|   |7 8 9|   |11 13 15|
 

ใน Numpy สิ่งนี้เรียกว่าการ ออกอากาศ

หลักการ

ภาษา XLA เข้มงวดและชัดเจนที่สุดเท่าที่จะเป็นไปได้หลีกเลี่ยงคุณสมบัติที่เป็นนัยและ "วิเศษ" คุณสมบัติดังกล่าวอาจทำให้การคำนวณง่ายขึ้นเล็กน้อยในการคิดค่าใช้จ่ายของข้อสมมติเพิ่มเติมอบเข้าไปในรหัสผู้ใช้ที่จะยากที่จะเปลี่ยนแปลงในระยะยาว หากจำเป็นสามารถเพิ่มคุณสมบัติโดยปริยายและเวทย์มนตร์ลงใน wrapper ระดับไคลเอนต์

ในส่วนที่เกี่ยวกับการออกอากาศจำเป็นต้องระบุข้อกำหนดการกระจายเสียงที่ชัดเจนเกี่ยวกับการทำงานระหว่างอาร์เรย์ของอันดับที่แตกต่างกัน สิ่งนี้แตกต่างจาก Numpy ซึ่งเป็นไปตามข้อกำหนดเมื่อเป็นไปได้

การกระจายอาเรย์ลำดับที่ต่ำกว่าไปยังอาเรย์ที่มีอันดับสูงกว่า

สเกลาร์ สามารถแพร่สัญญาณได้ทั่วอาเรย์โดยไม่มีการกำหนดขนาดของการกระจายเสียงอย่างชัดเจน การดำเนินการไบนารีองค์ประกอบที่ชาญฉลาดระหว่างสเกลาร์และอาร์เรย์หมายถึงการใช้การดำเนินการกับสเกลาร์สำหรับแต่ละองค์ประกอบในอาร์เรย์ ตัวอย่างเช่นการเพิ่มสเกลาร์เข้ากับเมทริกซ์หมายถึงการสร้างเมทริกซ์แต่ละองค์ประกอบซึ่งเป็นผลรวมของสเกลาร์กับองค์ประกอบของเมทริกซ์อินพุตที่สอดคล้องกัน

 |1 2 3| + 7 = |8  9  10|
|4 5 6|       |11 12 13|
 

ความต้องการในการออกอากาศส่วนใหญ่สามารถบันทึกได้โดยใช้มิติของการดำเนินการแบบไบนารี เมื่ออินพุตของการดำเนินการมีอันดับแตกต่างกัน tuple การกระจายเสียงนี้จะระบุว่ามิติใดในอาเรย์ อันดับที่สูงกว่า เพื่อให้ตรงกับอาเรย์ลำดับที่ ต่ำกว่า

ลองพิจารณาตัวอย่างก่อนหน้านี้แทนที่จะเพิ่มสเกลาร์เข้ากับเมทริกซ์ (2,3) ให้เพิ่มเวกเตอร์ของมิติ (3) ลงในเมทริกซ์ของมิติ (2,3) การดำเนินการนี้ไม่ถูกต้อง หากต้องการร้องขอการเพิ่มเมทริกซ์ - เวกเตอร์อย่างถูกต้องให้ระบุมิติการออกอากาศเป็น (1) ซึ่งหมายความว่ามิติของเวกเตอร์นั้นตรงกับมิติที่ 1 ของเมทริกซ์ ใน 2D หากมิติ 0 ถือเป็นแถวและมิติ 1 เป็นคอลัมน์หมายความว่าแต่ละองค์ประกอบของเวกเตอร์กลายเป็นคอลัมน์ขนาดที่ตรงกับจำนวนแถวในเมทริกซ์:

 |7 8 9| ==> |7 8 9|
            |7 8 9|
 

เป็นตัวอย่างที่ซับซ้อนยิ่งขึ้นให้พิจารณาเพิ่มเวกเตอร์ 3 องค์ประกอบ (มิติ (3)) ในเมทริกซ์ 3x3 (มิติ (3,3)) มีสองวิธีที่การกระจายสามารถเกิดขึ้นได้สำหรับตัวอย่างนี้:

(1) สามารถใช้มิติการออกอากาศ 1 องค์ประกอบเวกเตอร์แต่ละรายการจะกลายเป็นคอลัมน์และเวกเตอร์จะถูกทำซ้ำสำหรับแต่ละแถวในเมทริกซ์

 |7 8 9| ==> |7 8 9|
            |7 8 9|
            |7 8 9|
 

(2) สามารถใช้มิติการออกอากาศเป็น 0 องค์ประกอบเวกเตอร์แต่ละรายการจะกลายเป็นแถวและเวกเตอร์จะถูกทำซ้ำสำหรับแต่ละคอลัมน์ในเมทริกซ์

  |7| ==> |7 7 7|
 |8|     |8 8 8|
 |9|     |9 9 9|
 

มิติการกระจายข้อมูลอาจเป็นสิ่งอันดับที่อธิบายว่ารูปร่างอันดับที่เล็กลงนั้นถูกกระจายไปสู่รูปร่างอันดับที่ใหญ่ขึ้นได้อย่างไร ตัวอย่างเช่นเมื่อกำหนด 2x3x4 cuboid และเมทริกซ์ 3x4 แบบ tuple สำหรับออกอากาศ (1,2) หมายถึงการจับคู่ matrix กับขนาด 1 และ 2 ของ cuboid

การออกอากาศชนิดนี้ใช้ในไบนารี ops ใน XlaBuilder หากมีการกำหนดอาร์กิวเมนต์ broadcast_dimensions ตัวอย่างเช่นดู XlaBuilder :: เพิ่ม ในซอร์สโค้ด XLA บางครั้งการออกอากาศชนิดนี้บางครั้งเรียกว่าการออกอากาศ "InDim"

นิยามที่เป็นทางการ

แอ็ตทริบิวต์ Broadcasting อนุญาตให้จับคู่อาเรย์ลำดับที่ต่ำกว่ากับอาเรย์อันดับที่สูงขึ้นโดยระบุขนาดของอาเรย์ลำดับที่สูงกว่าเพื่อให้ตรงกัน ตัวอย่างเช่นสำหรับอาร์เรย์ที่มีขนาด MxNxPxQ เวกเตอร์ที่มีมิติ T สามารถจับคู่ได้ดังนี้:

           MxNxPxQ

dim 3:          T
dim 2:        T
dim 1:      T
dim 0:    T
 

ในแต่ละกรณี T ต้องเท่ากับมิติการจับคู่ของอาร์เรย์ลำดับที่สูงกว่า จากนั้นค่าของเวกเตอร์จะถูกถ่ายทอดจากมิติข้อมูลที่ตรงกันไปยังมิติอื่นทั้งหมด

ในการจับคู่เมทริกซ์ TxV เข้ากับอาร์เรย์ MxNxPxQ จะใช้คู่ของมิติการออกอากาศ:

           MxNxPxQ
dim 2,3:      T V
dim 1,2:    T V
dim 0,3:  T     V
etc...
 

ลำดับของมิติข้อมูลใน tuple ของการกระจายสัญญาณจะต้องเป็นลำดับที่คาดว่าขนาดของอาเรย์ลำดับที่ต่ำกว่านั้นจะตรงกับมิติของอาเรย์ลำดับที่สูงกว่า องค์ประกอบแรกในทูเปิลบอกว่ามิติใดในอาเรย์อันดับที่สูงกว่าต้องตรงกับมิติ 0 ในอาเรย์ลำดับที่ต่ำกว่า องค์ประกอบที่สองสำหรับส่วนข้อมูล 1 และอื่น ๆ ลำดับของขนาดการออกอากาศจะต้องเพิ่มขึ้นอย่างเคร่งครัด ตัวอย่างเช่นในตัวอย่างก่อนหน้ามันผิดกฎหมายที่จะจับคู่ V ถึง N และ T ถึง P; มันผิดกฎหมายที่จะจับคู่ V กับทั้ง P และ N

กระจายเสียงอาร์เรย์ลำดับที่คล้ายกันด้วยขนาดที่ลดลง

ปัญหาการออกอากาศที่เกี่ยวข้องคือการออกอากาศสองอาร์เรย์ที่มีระดับเดียวกัน แต่มีขนาดที่แตกต่างกัน เช่นเดียวกับกฎของนัมมี่นี่เป็นไปได้ก็ต่อเมื่อ เข้ากันได้ กับอาร์เรย์เท่านั้น สองอาร์เรย์ทำงานร่วมกันได้เมื่อขนาดทั้งหมดเข้ากันได้ สองมิติเข้ากันได้ถ้า:

  • พวกเขาเท่ากันหรือ
  • หนึ่งในนั้นคือ 1 (มิติ "เลวลง")

เมื่อพบสองอาร์เรย์ที่เข้ากันได้รูปร่างผลลัพธ์จะมีค่าสูงสุดระหว่างอินพุตทั้งสองที่ทุกดัชนีมิติ

ตัวอย่าง:

  1. (2,1) และ (2,3) ออกอากาศไปที่ (2,3)
  2. (1,2,5) และ (7,2,5) ออกอากาศไปที่ (7,2,5)
  3. (7,2,5) และ (7,1,5) ออกอากาศไปที่ (7,2,5)
  4. (7,2,5) และ (7,2,6) เข้ากันไม่ได้และไม่สามารถออกอากาศได้

กรณีพิเศษเกิดขึ้นและได้รับการสนับสนุนเช่นกันซึ่งแต่ละอาร์เรย์อินพุตมีมิติที่ลดลงที่ดัชนีอื่น ในกรณีนี้ผลลัพธ์คือ "การดำเนินการด้านนอก": (2,1) และ (1,3) ออกอากาศไปที่ (2,3) สำหรับตัวอย่างเพิ่มเติมศึกษา เอกสารของ Numpy เรื่องการกระจายเสียง

องค์ประกอบการออกอากาศ

การแพร่ภาพของอาเรย์ลำดับที่ต่ำกว่าไปยังอาเรย์ที่มีอันดับสูงกว่า และการ ออกอากาศโดยใช้มิติที่ลดลงสามารถดำเนินการในการดำเนินการแบบไบนารีเดียวกันได้ ตัวอย่างเช่นเวกเตอร์ขนาด 4 และเมทริกซ์ขนาด 1x2 สามารถรวมเข้าด้วยกันโดยใช้ค่าขนาดการออกอากาศเป็น (0):

 |1 2 3 4| + [5 6]    // [5 6] is a 1x2 matrix, not a vector.
 

ก่อนอื่นเวกเตอร์นั้นจะออกอากาศขึ้นอันดับ 2 (เมทริกซ์) โดยใช้ขนาดการออกอากาศ ค่าเดียว (0) ในมิติการออกอากาศบ่งชี้ว่าขนาดศูนย์ของเวกเตอร์ตรงกับขนาดศูนย์ของเมทริกซ์ สิ่งนี้สร้างเมทริกซ์ขนาด 4xM โดยที่ค่า M ถูกเลือกให้ตรงกับขนาดมิติที่สอดคล้องกันในอาร์เรย์ 1x2 ดังนั้นเมทริกซ์ 4x2 จึงถูกสร้างขึ้น:

 |1 1| + [5 6]
|2 2|
|3 3|
|4 4|
 

จากนั้น "การกระจายมิติที่ลดขนาด" จะกระจายศูนย์ขนาดของเมทริกซ์ 1x2 เพื่อให้ตรงกับขนาดมิติที่เกี่ยวข้องของด้านขวามือ:

 |1 1| + |5 6|     |6  7|
|2 2| + |5 6|  =  |7  8|
|3 3| + |5 6|     |8  9|
|4 4| + |5 6|     |9 10|
 

ตัวอย่างที่ซับซ้อนมากขึ้นคือเมทริกซ์ขนาด 1x2 ที่เพิ่มเข้าไปในอาร์เรย์ขนาด 4x3x1 โดยใช้ขนาดการออกอากาศเป็น (1, 2) อันดับแรก 1x2 เมทริกซ์จะถูกถ่ายทอดไปยังอันดับที่ 3 โดยใช้ขนาดการออกอากาศเพื่อสร้างอาร์เรย์ Mx1x2 ระดับกลางซึ่งขนาดมิติ M ถูกกำหนดโดยขนาดของตัวถูกดำเนินการที่มีขนาดใหญ่กว่า (อาร์เรย์ 4x3x1) สร้างอาร์เรย์กลาง 4x1x2 M อยู่ในมิติที่ 0 (ส่วนใหญ่ซ้าย) เนื่องจากมิติที่ 1 และ 2 ถูกแมปกับมิติของเมทริกซ์ 1x2 ดั้งเดิมเมื่อมิติการออกอากาศคือ (1, 2) อาร์เรย์กลางนี้สามารถเพิ่มลงในเมทริกซ์ 4x3x1 โดยใช้การกระจายสัญญาณของมิติที่ลดลงเพื่อสร้างผลลัพธ์อาร์เรย์ 4x3x2