ดำเนินการคำขอ RPC เป็นชุด
การดำเนินการนี้ดำเนินการคำขอ RPC เดียวหรือชุดคำขอแบบอะซิงโครนัส คำขอ RPC ถูกกำหนดโดยพารามิเตอร์หลักสามตัว:
- `address` (โฮสต์+พอร์ตหรือที่อยู่ BNS ของคำขอ) - `method` (ชื่อวิธี RPC สำหรับการร้องขอ) - `request` (สตริงโปรโตแบบอนุกรมหรือเวกเตอร์ของสตริงของอาร์กิวเมนต์คำขอ RPC) .
ตัวอย่างเช่น หากคุณมีบริการ RPC ที่ทำงานบนพอร์ต localhost:2345 และอินเทอร์เฟซของบริการได้รับการกำหนดค่าด้วยการประกาศโปรโตต่อไปนี้:
service MyService {
rpc MyMethod(MyRequestProto) returns (MyResponseProto) {
};
}
จากนั้นเรียกสิ่งนี้ว่า op พร้อมข้อโต้แย้ง: address = "localhost:2345"
method = "MyService/MyMethod"
เทนเซอร์ 'คำขอ' คือเทนเซอร์สตริงที่แสดงสตริง 'MyRequestProto' ที่ทำให้เป็นอนุกรม และเทนเซอร์สตริงเอาท์พุต `response` จะมีรูปร่างเหมือนกันและมี (เมื่อเสร็จสิ้นสำเร็จ) สตริง `MyResponseProto` ที่เป็นอนุกรมที่สอดคล้องกันตัวอย่างเช่น หากต้องการส่ง `MyRequestProto` ที่ว่างเปล่า ให้เรียก op นี้ด้วย `request = ""` หากต้องการส่งคำขอว่าง แบบขนาน 5 รายการ ให้เรียก op นี้ด้วย `request = ["", "", "", "", ""]`
โดยทั่วไป เราสามารถสร้างชุดของโปรโตซีเรียลไลซ์ `MyRequestProto` จากเทนเซอร์แบบแบตช์ปกติโดยใช้ op `encode_proto` และแปลงการตอบสนอง `MyResponseProto` โปรโตซีเรียลไลซ์เป็นเทนเซอร์แบบแบตช์โดยใช้ op `decode_proto`
หมายเหตุ การทำงานกับสตริงโปรโตแบบอนุกรมจะเร็วกว่าการสร้างอินสแตนซ์ออบเจ็กต์โปรโตจริงในหน่วยความจำ ดังนั้นจึงคาดว่าจะไม่ลดประสิทธิภาพลงเมื่อเปรียบเทียบกับการเขียนเคอร์เนลแบบกำหนดเองสำหรับเวิร์กโฟลว์นี้
หากการเชื่อมต่อล้มเหลวหรือผู้ปฏิบัติงานระยะไกลส่งคืนสถานะข้อผิดพลาด op จะเพิ่มข้อยกเว้นนี้ในเครื่อง
ดูการดำเนินการ `TryRpc` หากคุณต้องการจัดการกับความล้มเหลวของ RPC ด้วยตนเองในกราฟ
คลาสที่ซ้อนกัน
ระดับ | Rpc.ตัวเลือก | แอ็ตทริบิวต์ทางเลือกสำหรับ Rpc |
ค่าคงที่
สตริง | OP_NAME | ชื่อของ op นี้ ซึ่งรู้จักกันในชื่อของเอ็นจิ้นหลัก TensorFlow |
วิธีการสาธารณะ
เอาท์พุต < TString > | เป็นเอาท์พุต () ส่งกลับค่าแฮนเดิลสัญลักษณ์ของเทนเซอร์ |
Rpc แบบคงที่ | สร้าง (ขอบเขต ขอบเขต , ตัวดำเนินการ < TString > ที่อยู่, ตัวดำเนินการ < TString > วิธีการ, ตัวดำเนินการ < TString > คำขอ, ตัวเลือก... ตัวเลือก) วิธีการจากโรงงานเพื่อสร้างคลาสที่รวมการดำเนินการ Rpc ใหม่ |
Rpc.Options แบบคงที่ | FailFast (บูลีน FailFast) |
Rpc.Options แบบคงที่ | โปรโตคอล (โปรโตคอลสตริง) |
เอาท์พุต < TString > | การตอบสนอง () รูปร่างเดียวกับ 'คำขอ' |
Rpc.Options แบบคงที่ | timeoutInMs (หมดเวลานานInMs) |
วิธีการสืบทอด
ค่าคงที่
สตริงสุดท้ายแบบคงที่สาธารณะ OP_NAME
ชื่อของ op นี้ ซึ่งรู้จักกันในชื่อของเอ็นจิ้นหลัก TensorFlow
วิธีการสาธารณะ
เอาท์พุท สาธารณะ < TString > asOutput ()
ส่งกลับค่าแฮนเดิลสัญลักษณ์ของเทนเซอร์
อินพุตสำหรับการดำเนินการ TensorFlow คือเอาต์พุตของการดำเนินการ TensorFlow อื่น วิธีการนี้ใช้เพื่อรับหมายเลขอ้างอิงสัญลักษณ์ที่แสดงถึงการคำนวณอินพุต
การสร้าง Rpc สาธารณะแบบคงที่ (ขอบเขต ขอบเขต , ตัวดำเนินการ < TString > ที่อยู่, ตัวดำเนินการ < TString > วิธีการ, ตัวดำเนินการ < TString > คำขอ, ตัวเลือก... ตัวเลือก)
วิธีการจากโรงงานเพื่อสร้างคลาสที่รวมการดำเนินการ Rpc ใหม่
พารามิเตอร์
ขอบเขต | ขอบเขตปัจจุบัน |
---|---|
ที่อยู่ | `0-D` หรือ `1-D` ที่อยู่ (เช่น host_name:port) ของเซิร์ฟเวอร์ RPC หากเทนเซอร์นี้มีมากกว่า 1 องค์ประกอบ ระบบจะส่งคำขอ rpc แบบขนานหลายรายการ อาร์กิวเมนต์นี้ออกอากาศด้วย 'วิธีการ' และ 'คำขอ' |
วิธี | `0-D` หรือ `1-D` ที่อยู่วิธีการบนเซิร์ฟเวอร์ RPC หากเทนเซอร์นี้มีมากกว่า 1 องค์ประกอบ ระบบจะส่งคำขอ rpc แบบขนานหลายรายการ อาร์กิวเมนต์นี้ออกอากาศด้วย 'ที่อยู่' และ 'คำขอ' |
ขอ | `0-D` หรือ `1-D` สตริงโปรโตแบบอนุกรม: อาร์กิวเมนต์คำขอ rpc หากเทนเซอร์นี้มีมากกว่า 1 องค์ประกอบ ระบบจะส่งคำขอ rpc แบบขนานหลายรายการ อาร์กิวเมนต์นี้ออกอากาศด้วย 'ที่อยู่' และ 'วิธีการ' |
ตัวเลือก | มีค่าแอตทริบิวต์ทางเลือก |
การส่งคืน
- อินสแตนซ์ใหม่ของ Rpc
Rpc.Options คงที่สาธารณะ ล้มเหลวอย่างรวดเร็ว (บูลีนล้มเหลวเร็ว)
พารามิเตอร์
ล้มเหลวเร็ว | 'บูลีน'. หากเป็น "จริง" (ค่าเริ่มต้น) ความล้มเหลวในการเชื่อมต่อ (เช่น เซิร์ฟเวอร์ไม่ตอบสนองในทันที) จะทำให้ RPC ล้มเหลว |
---|
โปรโตคอล Rpc.Options สาธารณะแบบคงที่ (โปรโตคอลสตริง)
พารามิเตอร์
โปรโตคอล | โปรโตคอล RPC ที่จะใช้ สตริงว่างหมายถึงใช้โปรโตคอลเริ่มต้น ตัวเลือกรวมถึง 'grpc' |
---|
เอาท์พุท สาธารณะ < TString > การตอบสนอง ()
รูปร่างเดียวกับ 'คำขอ' สตริงโปรโตแบบอนุกรม: การตอบสนอง rpc
สาธารณะ Rpc.Options หมดเวลา InMs แบบคงที่ (timeoutInMs ยาว)
พารามิเตอร์
หมดเวลาในMs | `อินท์`. หากเป็น `0` (ค่าเริ่มต้น) เคอร์เนลจะเรียกใช้คำขอ RPC และหมดเวลาเฉพาะเมื่อพ้นกำหนดเวลา RPC หรือหมดเวลาเซสชันเท่านั้น หากค่านี้มากกว่า `0` op จะเพิ่มข้อยกเว้นหาก RPC ใช้เวลานานกว่า `timeout_in_ms` |
---|