กำลังออกอากาศ

เอกสารนี้อธิบายความหมายของการแพร่สัญญาณของ XLA

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

การกระจายเสียงเป็นกระบวนการสร้างอาร์เรย์ที่มีรูปทรงต่างๆ รูปร่างที่ใช้งานร่วมกันได้สำหรับการคำนวณทางคณิตศาสตร์ คำศัพท์ถูกใช้จาก การออกอากาศ 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 ระดับลูกค้า

สำหรับการออกอากาศ XLA ต้องการข้อกำหนดเฉพาะสำหรับการออกอากาศ ในการดำเนินการระหว่างอาร์เรย์ของอันดับต่างๆ ซึ่งแตกต่างจาก NumPy ซึ่งอนุมานข้อกำหนดในกรณีที่เป็นไปได้

การเผยแพร่อาร์เรย์ที่มีอันดับต่ำกว่าไปยังอาร์เรย์ที่มีอันดับสูงกว่า

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

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

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

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

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

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

(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|

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

การออกอากาศประเภทนี้จะใช้ในไบนารี Ops ใน XlaBuilder หาก มีการระบุอาร์กิวเมนต์ broadcast_dimensions ตัวอย่างเช่น โปรดดู XlaBuilder::Add ในซอร์สโค้ด XLA บางครั้งการแพร่สัญญาณประเภทนี้เรียกว่า "InDim" ออกอากาศ

คำจำกัดความอย่างเป็นทางการ

แอตทริบิวต์การออกอากาศช่วยให้จับคู่อาร์เรย์อันดับต่ำกว่ากับอันดับที่สูงกว่าได้ โดยการระบุมิติข้อมูลของอาร์เรย์อันดับสูงกว่าที่จะจับคู่ สำหรับ เช่น สำหรับอาร์เรย์ที่มีมิติข้อมูลเป็น 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 ในอาร์เรย์อันดับต่ำกว่า องค์ประกอบที่สองใน Tuple จะระบุมิติข้อมูลในอาร์เรย์ที่มีอันดับสูงกว่า จะต้องตรงกับมิติข้อมูล 1 ในอาร์เรย์อันดับต่ำ เป็นต้น ลำดับของ ขนาดการออกอากาศจะต้องเพิ่มขึ้นอย่างเคร่งครัด ตัวอย่างเช่น ก่อนหน้านี้ ตัวอย่างเช่น การจับคู่ V กับ N และ T กับ P เป็นสิ่งที่ผิดกฎหมาย การจับคู่ V ก็ผิดกฎหมายเช่นกัน เป็นทั้ง P และ N

การกระจายอาร์เรย์ที่มีอันดับใกล้เคียงกันด้วยมิติข้อมูลที่เสื่อมทราม

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

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

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

ตัวอย่าง

  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) ใช้ร่วมกันไม่ได้และไม่สามารถออกอากาศได้

จะมีกรณีพิเศษเกิดขึ้น และรองรับเช่นกันเมื่ออาร์เรย์อินพุตแต่ละรายการมี มิติข้อมูลที่มีการลดระดับที่ดัชนีอื่น ในกรณีนี้ ผลลัพธ์คือ "outer Operations": (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