System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及gpu的,尤其是涉及一種應用于gpu算力調度的應用快速切換方法及系統。
技術介紹
1、目前,對于在ai應用主要的工作負載包括ai程序的吞吐量密集型訓練任務和延遲敏感的推理任務,主流做法是分別為訓練和推理提供專用的gpu集群。但在大模型架構中,推理任務和訓練任務均難以使用訓練集群來服務。
2、參照圖1,ai程序的任務運行包括任務準備、任務執行以及任務清洗三個階段,由于gpu在新任務和舊任務之間切換時有很高的開銷,現在的切換方式是秒級,而大部分推理任務具有嚴格的服務指標(slos),需要控制在數十到數百毫秒的范圍內,因此切換效率低下,難以將多個深度練習(dl)程序打包到同一gpu服務器上。
3、現有的解決方案是讓多個不同的模型在空間上共享gpu顯存,包括圖2所示的nvidia多進程共享(mps),mps的方式是提前準備每個模型的任務,即新舊任務均先準備,其切換速度快,但問題在于多個模型占據很大的顯存空間,導致gpu整理利用率變低,因此需要改進。
技術實現思路
1、為了減小ai程序在gpu上運行的任務切換開銷,且提升gpu的利用率,本申請提供了一種應用于gpu算力調度的應用快速切換方法及系統。
2、本申請的上述專利技術目的一是通過以下技術方案得以實現的:
3、一種應用于gpu算力調度的應用快速切換方法,包括步驟:
4、將ai程序在gpu上運行的一個任務劃分為若干執行子任務,并基于預設的準備規則,將任務準備階段劃分出第一
5、基于預設的運行規則,在當前任務的任務準備階段過程中,運行下一個任務的第一準備階段;
6、在當前任務的任務執行階段達到預設進程時,運行下一個任務中第一個所述執行子任務的第二準備階段;
7、當下一個任務中第一個所述執行子任務的第二準備階段運行結束后,運行第一個所述執行子任務;
8、在第一個所述執行子任務運行過程中,運行下一個執行子任務的第二準備階段,同時運行任務清洗階段以清除已完成運行的任務;
9、當所有執行子任務運行完成后,運行任務清洗階段。
10、通過采用上述技術方案,為了有效地分時gpu,最小化任務切換的開銷,通過將ai程序在gpu上運行的任務劃分為多個執行子任務,并將任務準備階段進行劃分,在當前任務準備的過程中,即開始下一個任務的第一準備階段,即舊任務開始時,先開始部分新任務的準備,并將執行子任務的第二準備階段與上一個任務的執行同時運行,且在執行子任務運行后即運行任務清洗階段,保持gpu上有足夠的顯存去準備和運行每個執行子任務,同時也提升了利用率;因此,上述通過流水線式的任務上下文切換設置,統一了顯存管理和主備工作分子任務運行,大大降低了切換開銷,提升gpu的利用率。
11、可選的,所述并基于預設的準備規則,將任務準備階段劃分出第一準備階段和第二準備階段,包括:
12、所述第一準備階段包括環境初始化階段,所述環境初始化階段用于進程啟動以及pytorch?cuda運行時的加載和cuda上下文初始化;
13、所述第二準備階段包括顯存分配階段和數據傳輸階段,所述顯存分配階段用于為ai程序中的執行子任務申請匹配的顯存,且所述ai程序保存于預設的主機內存中;
14、所述數據傳輸階段用于將ai程序模型的模型數據和需要在gup上運行的任務從主機內存中拷貝至顯存中。
15、通過采用上述技術方案,由于環境初始化階段中只進行運行時夾在和cuda的上下文初始化,因此運行所占用的顯存小,可以對多個任務或執行子任務進行初始化工作,提升gpu利用率。
16、可選的,所述基于預設的運行規則,在當前任務的任務準備階段過程中,運行下一個任務的第一準備階段;包括:
17、基于預設的運行規則,在當前任務開始運行環境初始化階段時,同步運行下一個任務的環境初始化階段;
18、當同步運行環境初始化階段的所有任務占用的顯存達到第一預設值,暫停運行新的任務的環境初始化階段;
19、在任務清洗階段的運行后,同步運行環境初始化階段的所有任務占用的顯存再次小于第一預設值時,重新運行下一個任務的環境初始化階段。
20、通過采用上述技術方案,考慮顯存大小的影響,對于每個任務的環境初始化階段的提前準備,也需要控制其數量,因此設置第一預設值,當進行環境初始化準備的任務或執行子任務所占用的顯存達到第一預設值時,則先暫停環境初始化階段的提前準備,待任務清洗階段進行顯存釋放后再次進行環境初始化的提前準備,是現在保持gpu高利用率的情況下減少切換開銷的時間。
21、可選的,所述在當前任務的任務執行階段達到預設進程時,運行下一個任務中第一個所述執行子任務的第二準備階段;包括:
22、獲取當前任務中執行子任務的個數,并識別未運行的執行子任務的數量信息;
23、當數量信息小于預設數量時,獲取所有未運行的執行子任務各自對應的顯存申請信息;
24、基于顯存申請信息,當任一所述未運行的執行子任務所申請的顯存大于第二預設值時,將該條未運行的執行子任務進行標記;
25、當被標記的執行子任務運行完成時,運行下一個任務中第一個所述執行子任務的第二準備階段。
26、通過采用上述技術方案,為了在保持gpu高利用率的前提下,滿足低開銷的任務切換,對于第二準備階段的運行,即顯存分配階段和數據傳輸階段的運行設置,需要對當前未完成運行的執行子任務進行數量識別和顯存識別,若當前未運行的執行子任務仍較多時,則先不運行下一個任務中執行子任務的第二準備階段,當前未運行的執行子任務小于預設數量后,還需要對未運行的執行子任務進行顯存識別,若其顯存大于第二預設值,則將該執行子任務進行標記,并判定仍存在切換開銷大的風險,因此等待被標記的執行子任務運行完成后,再運行下一個執行子任務的第二準備階段,能夠降低上下文切換的開銷。
27、可選的,所述當下一個任務中第一個所述執行子任務的第二準備階段運行結束后,運行第一個所述執行子任務;包括:
28、當下一個任務中第一個所述執行子任務的第二準備階段運行結束時,判斷當前任務的任務執行階段是否結束運行;
29、若當前任務的任務執行階段結束,則立即運行第一個所述執行子任務;
30、若當前任務的任務執行階段未結束,則判斷當前所運行的執行子任務與即將運行的第一個所述執行子任務所申請的顯存之和是否超過第二預設值,若是,則待當前任務的任務執行階段結束時,運行第一個所述執行子任務。
31、通過采用上述技術方案,當執行子任務的第二準備階段完成后,即完成顯存申請和數據拷貝后,仍需要判定是否能夠立即運行當前的執行子任務,以降低上下文切換的開銷,因此,第二準備階段完成后,需要判斷當前剩下未完成運行的部分執行子任務與即將要運行的執行子任務相加的顯存是否超過第二預設值,進行選擇性地判斷下一個本文檔來自技高網...
【技術保護點】
1.一種應用于GPU算力調度的應用快速切換方法,其特征在于:
2.根據權利要求1所述的一種應用于GPU算力調度的應用快速切換方法,其特征在于:所述并基于預設的準備規則,將任務準備階段劃分出第一準備階段和第二準備階段,包括:
3.根據權利要求2所述的一種應用于GPU算力調度的應用快速切換方法,其特征在于:所述基于預設的運行規則,在當前任務的任務準備階段過程中,運行下一個任務的第一準備階段;包括:
4.根據權利要求1所述的一種應用于GPU算力調度的應用快速切換方法,其特征在于:所述在當前任務的任務執行階段達到預設進程時,運行下一個任務中第一個所述執行子任務的第二準備階段;包括:
5.根據權利要求4所述的一種應用于GPU算力調度的應用快速切換方法,其特征在于:所述當下一個任務中第一個所述執行子任務的第二準備階段運行結束后,運行第一個所述執行子任務;包括:
6.根據權利要求2所述的一種應用于GPU算力調度的應用快速切換方法,其特征在于:所述顯存分配階段用于為AI程序中的執行子任務申請匹配的顯存,包括:
7.根據權利要
8.一種應用于GPU算力調度的應用快速切換系統,其特征在于:
9.一種計算機設備,包括存儲器、處理器以及存儲在所述存儲器中并可在所述處理器上運行的計算機程序,其特征在于,所述處理器執行所述計算機程序時實現如權利要求1至7任一項所述一種應用于GPU算力調度的應用快速切換方法的步驟。
10.一種計算機可讀存儲介質,所述計算機可讀存儲介質存儲有計算機程序,其特征在于,所述計算機程序被處理器執行時實現如權利要求1至7任一項所述一種應用于GPU算力調度的應用快速切換方法的步驟。
...【技術特征摘要】
1.一種應用于gpu算力調度的應用快速切換方法,其特征在于:
2.根據權利要求1所述的一種應用于gpu算力調度的應用快速切換方法,其特征在于:所述并基于預設的準備規則,將任務準備階段劃分出第一準備階段和第二準備階段,包括:
3.根據權利要求2所述的一種應用于gpu算力調度的應用快速切換方法,其特征在于:所述基于預設的運行規則,在當前任務的任務準備階段過程中,運行下一個任務的第一準備階段;包括:
4.根據權利要求1所述的一種應用于gpu算力調度的應用快速切換方法,其特征在于:所述在當前任務的任務執行階段達到預設進程時,運行下一個任務中第一個所述執行子任務的第二準備階段;包括:
5.根據權利要求4所述的一種應用于gpu算力調度的應用快速切換方法,其特征在于:所述當下一個任務中第一個所述執行子任務的第二準備階段運行結束后,運行第一個所述執行子任務;包括:
6....
【專利技術屬性】
技術研發人員:張磊,王堯,張博云,
申請(專利權)人:廣東博成網絡科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。