TASO ปรับกราฟการคำนวณของโมเดล DNN ให้เหมาะสมโดยใช้การแปลงกราฟที่สร้างขึ้นและตรวจสอบโดยอัตโนมัติ สำหรับโมเดล DNN ที่กำหนดเอง TASO จะใช้การแปลงกราฟที่สร้างขึ้นโดยอัตโนมัติเพื่อสร้างพื้นที่การค้นหาขนาดใหญ่ของกราฟการคำนวณที่เป็นไปได้ซึ่งเทียบเท่ากับโมเดล DNN ดั้งเดิม TASO ใช้อัลกอริธึมการค้นหาตามต้นทุนเพื่อสำรวจพื้นที่ และค้นหากราฟการคำนวณที่ได้รับการปรับปรุงให้เหมาะสมที่สุดโดยอัตโนมัติ TASO มีประสิทธิภาพเหนือกว่าเครื่องมือเพิ่มประสิทธิภาพกราฟในเฟรมเวิร์กการเรียนรู้เชิงลึกที่มีอยู่ถึง 3 เท่า
ดูคำแนะนำในการติดตั้ง TASO จากแหล่งที่มา นอกจากนี้เรายังจัดเตรียมอิมเมจนักเทียบท่าที่สร้างไว้ล่วงหน้าพร้อมการขึ้นต่อกันทั้งหมดที่ติดตั้งไว้ล่วงหน้า
TASO สามารถปรับโมเดล DNN ที่ได้รับการฝึกอบรมล่วงหน้าโดยตรงในรูปแบบกราฟ ONNX, TensorFlow และ PyTorch TASO ยังมีอินเทอร์เฟซ Python สำหรับการเพิ่มประสิทธิภาพสถาปัตยกรรม DNN ตามอำเภอใจ TASO รองรับการส่งออกกราฟการคำนวณที่ได้รับการปรับให้เหมาะสมไปยัง ONNX ซึ่งสามารถใช้เป็นอินพุตได้โดยตรงโดยเฟรมเวิร์กการเรียนรู้เชิงลึกที่มีอยู่ส่วนใหญ่
TASO สามารถปรับโมเดล ONNX ที่ได้รับการฝึกล่วงหน้าได้โดยตรง และสามารถทำได้โดยใช้โค้ด Python เพียงไม่กี่บรรทัด ข้อมูลโค้ดต่อไปนี้แสดงวิธีโหลดโมเดล DNN ที่ได้รับการฝึกล่วงหน้าจาก ONNX เพิ่มประสิทธิภาพโมเดล และบันทึกโมเดลที่ได้รับการปรับแต่งลงในไฟล์ ONNX
import taso
import onnx
old_model = taso . load_onnx ( "/path/to/load/onnx/model" )
taso_graph = taso . optimize ( old_model )
new_model = taso . export_onnx ( taso_graph )
onnx . save ( new_model , "/path/to/save/new/onnx/model" )
โมเดลที่ได้รับการปรับให้เหมาะสมมีความแม่นยำเหมือนกับต้นฉบับ และสามารถนำมาใช้โดยตรงโดยเฟรมเวิร์กการเรียนรู้เชิงลึกที่มีอยู่ ไฟล์ ONNX ต้นฉบับและ TASO ที่ปรับให้เหมาะสมบางไฟล์มีอยู่ในโฟลเดอร์ onnx
TASO สามารถเพิ่มประสิทธิภาพโมเดล TensorFlow ได้โดยการแปลงโมเดลเป็น ONNX โดยใช้ tf2onnx
tf2onnx
จาก PyPi ตามนี้หรือจากแหล่งที่มา pip install -U tf2onnx
tf2onnx
python -m tf2onnx.convert
--saved-model /path/to/tensorflow/saved/model
--output /path/to/onnx/model/file
PyTorch มีการรองรับ ONNX ในตัวโดยเป็นส่วนหนึ่งของแพ็คเกจ torch.onnx TASO สามารถเพิ่มประสิทธิภาพโมเดล PyTorch ในรูปแบบ ONNX ได้โดยตรง
TASO ยังสามารถปรับสถาปัตยกรรม DNN ได้ตามใจชอบโดยใช้อินเทอร์เฟซ TASO Python ข้อมูลโค้ดต่อไปนี้จะสร้างกราฟ DNN ด้านซ้ายสุดดังที่แสดงในรูป TASO ดำเนินการแปลงรูปแบบที่ไม่สำคัญโดยอัตโนมัติ และในที่สุดก็ค้นพบกราฟ DNN ที่เหมาะสมที่สุด ซึ่งเร็วขึ้น 1.3 เท่าบน V100 GPU มีตัวอย่าง DNN เพิ่มเติมอยู่ในโฟลเดอร์ examples
import taso
import onnx
#Build DNN model
graph = taso . new_graph ()
input = graph . new_input ( dims = ( 1 , 128 , 56 , 56 ))
w1 = graph . new_weight ( dims = ( 128 , 128 , 3 , 3 ))
w2 = graph . new_weight ( dims = ( 128 , 128 , 1 , 1 ))
w3 = graph . new_weight ( dims = ( 128 , 128 , 3 , 3 ))
left = graph . conv2d ( input = input , weight = w1 , strides = ( 1 , 1 ), padding = "SAME" , activation = "RELU" )
left = graph . conv2d ( input = left , weight = w3 , strides = ( 1 , 1 ), padding = "SAME" )
right = graph . conv2d ( input = input , weight = w2 , strides = ( 1 , 1 ), padding = "SAME" , activation = "RELU" )
output = graph . add ( left , right )
output = graph . relu ( output )
#Optimize DNN model
new_graph = taso . optimize ( graph )
onnx_model = taso . export_onnx ( new_graph )
onnx . save ( onnx_model , "/path/to/save/new/onnx/model" )
จื้อห่าว เจีย, โอเดด ปาดอน, เจมส์ โธมัส, ท็อดด์ วอร์ซอว์สกี้, มาเทย์ ซาฮาเรีย และอเล็กซ์ ไอเคน TASO: เพิ่มประสิทธิภาพการคำนวณการเรียนรู้เชิงลึกด้วยการสร้างการแทนที่กราฟอัตโนมัติ ใน Proceedings of the Symposium on Operating Systems Principles (SOSP), ออนแทรีโอ, แคนาดา, ตุลาคม 2019
จื้อห่าว เจีย, เจมส์ โธมัส, ท็อดด์ วอร์ซอว์สกี้, หมิงหยู เกา, มาเทย์ ซาฮาเรีย และอเล็กซ์ ไอเคน การเพิ่มประสิทธิภาพการคำนวณ DNN ด้วยการทดแทนกราฟแบบผ่อนคลาย ใน Proceedings of the Conference on Systems and Machine Learning (SysML), พาโลอัลโต, แคลิฟอร์เนีย, เมษายน 2019