




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
昇騰推理技術(shù)的優(yōu)化實(shí)踐演講人:張君02
昇騰硬件親和的FA融合算子性能優(yōu)化實(shí)踐03
基于Ascend
C的MC2通算融合算子性能優(yōu)化01大模型推理的現(xiàn)狀及挑戰(zhàn)目錄04
總結(jié)與展望大模型推理的現(xiàn)狀以及挑戰(zhàn)自回歸算力利用率低,低時(shí)延高吞吐難以兼顧Prefill和Decode兩階段推理差異大,難以充分利用算力資源?基于request的調(diào)度導(dǎo)致大量算力空閑:同batch序列長度差異大?不同階段的請(qǐng)求難以batch:prefill/decode輸入、
kvcache維度差別大Decode階段每token串行解碼算力利用率低?串行解碼以GEMV為主,計(jì)算訪存比低?KVCache訪存量隨序列長度增長,Attention占比增加模型規(guī)模大,內(nèi)存容量和訪存是瓶頸內(nèi)存容量不足導(dǎo)致單卡無法推理?模型參數(shù):百億/千億模型參數(shù)超過單卡內(nèi)存容量?KVCache:隨著batchsize和序列長度增長,占用更多內(nèi)存;訪存帶寬制約50ms/token推理時(shí)延達(dá)成?多路并發(fā)緩和帶寬壓力,提升吞吐但增加時(shí)延?隨著序列增長,
KVCache訪存成為瓶頸,推理時(shí)延成倍增長 現(xiàn)狀1:模型規(guī)模增大及自回歸解碼帶來訪存及算力利用率壓力迭代多步
…
×
N不同用戶請(qǐng)求輸出長度不同迭代步數(shù)多的請(qǐng)求時(shí)延長
…
×
N02 batch
×seq小
<EOS>時(shí)延決定用戶體驗(yàn),吞吐衡量系統(tǒng)成本不同請(qǐng)求輸入長度不同batch
×seq大
緩存
×
N
<EOS>每token串行Decode階段
<EOS>…
×
N…
×
NPrefill階段…??…
×
N×
N…
×
N…
×
N…
×
N??…V
∈Rseq×TDim原理:向量
×矩陣,瓶頸:HBM或者顯存開銷KVCache內(nèi)存占用=
2
*KVB
*seq
*
Layer
*
TDim
*
示例:以Llama270B為例,
1M序列長度推理時(shí)延52秒,
HBM利用率50%,需要消耗18NPU卡內(nèi)存墻:
KVCache內(nèi)存占用隨序列長度、
Batchsize增加,
KVcache顯存開銷成倍上升,采用HBM存儲(chǔ)KVCache成本依然很高。V
∈Rseq×TDim原理:矩陣
×矩陣,瓶頸:算力推理計(jì)算量
=Layer
*
(4
*seq2
*
TDim+
24*
Seq
*
TDim2)
Attention計(jì)算量與序列長度成平方關(guān)系
,線性層計(jì)算量與序列
長度成正比示例:以Llama270B為例,
1M序列長度推理時(shí)延52秒,算力利用率50%,需要消耗216NPU卡(備注:
Layer網(wǎng)絡(luò)層數(shù),TDim特征維度,seq序列長度,
KVB為精度)WQWKX
∈Rseq2×TDimWVQ
∈
R
seq2×TDimS
∈K
CacheK
∈Rseq×TDimKT∈RTDim×seqV
CacheQ
×
KT
softmax(S)Rseq2×seqAttention計(jì)算結(jié)果MatMulO
=
P
×
V
O
∈Rseq×TDim現(xiàn)狀2:
KV
Cache導(dǎo)致"內(nèi)存墻”瓶頸進(jìn)一步加劇采用KVCache,推理內(nèi)存開銷數(shù)線性增長,形成“
內(nèi)存墻”和”帶寬墻”MatMulMatMulKT
∈
RTDim×seq
O
=
P
×
VO
∈Rseq×TDim不采用KVCache,全量計(jì)算硬推,
計(jì)算量隨序列長度增加指數(shù)級(jí)增漲WQWKX∈Rseq×TDimWVQ
∈Rseq×TDimK
∈Rseq×TDimMatMulsoftmax(S)s
=
Q
×
KT
S
∈
Rseq×seqAttention計(jì)算結(jié)果s
=02算法層優(yōu)化
模型分片:分片策略優(yōu)化,增量推理
投機(jī)推理:自投機(jī)增量推理
模型量化:8Bit量化,
4Bit量化
Attention計(jì)算優(yōu)化
…01算子層優(yōu)化
算子融合:QKV融合大算子,提升增量響應(yīng)。
高性能加速庫:
cuBLAS,F(xiàn)asterTransformer
,ATB等
…03框架層優(yōu)化
Continous
Batching
PageAttention
PD分離部署
…
大模型推理常用加速技術(shù)發(fā)力點(diǎn)昇騰硬件親和的FA融合算子性能優(yōu)化實(shí)踐u
受限于昇騰Atlas300I上Vec算力相較于Cube低很
多,
FA(FlashAttention)算子的性能分析結(jié)果呈現(xiàn)很明顯的VecBound(Vector是性能瓶頸,約占總執(zhí)行時(shí)間的90%)u
但Mul和Add操作是非常親和矩陣乘計(jì)算的,所以現(xiàn)考慮能否把這兩個(gè)計(jì)算步驟改到Cube進(jìn)行
計(jì)算,提升性能u
onlineSoftmax算法一般
涉及exp、sub、
Mul、Add等步驟,由于它們都是向量操作,所以一般放在Vec進(jìn)行更新計(jì)算,這部分約占算子執(zhí)行總時(shí)間的15%Qu
FA/
PA算法的重點(diǎn)就是使用onlineSoftmax(分塊、動(dòng)態(tài))的方法小步快跑,逐步對(duì)kvcache進(jìn)行
計(jì)算,提升計(jì)算效率,減少內(nèi)存占用 挑戰(zhàn)1:vector能力不足,如何用cube補(bǔ)齊u
Cube計(jì)算單元和Vector計(jì)算單元同核部署,Cube計(jì)算單元和Vector計(jì)算單元共享同一個(gè)Scalar單元,統(tǒng)一加載所有的代碼段。u
列出了計(jì)算架構(gòu)中的存儲(chǔ)單元和計(jì)算單元,箭頭表示數(shù)據(jù)處理流向,MTE1/MTE2/MTE3代表搬運(yùn)單元。
AICore的耦合架構(gòu)Scalar負(fù)責(zé)各類型的標(biāo)量數(shù)據(jù)運(yùn)算和程序的流程控制。功能上可以看做一個(gè)小CPU,完成整個(gè)程序的循環(huán)控制、分支判
斷。Vector負(fù)責(zé)執(zhí)行向量運(yùn)算。向量計(jì)算單元可以快速完成兩個(gè)
FP16類型的向量相加或者相乘,
向量指令支持多次迭代執(zhí)
行。
Scalar
,Vector計(jì)算單元VectorScalaru
Cube計(jì)算單元負(fù)責(zé)執(zhí)行矩陣運(yùn)算
,一次執(zhí)行即可完成A矩陣(
M*
K
)與B矩陣
(
K
*
N)的矩陣乘。u
如左圖所示紅色虛線框劃出了Cube計(jì)算單元及其訪問的存儲(chǔ)單元,其中
L0A存
儲(chǔ)左矩陣,
L0B存儲(chǔ)右矩陣,
L0C存儲(chǔ)矩陣乘的結(jié)果和中間結(jié)果。
Cube計(jì)算單元 構(gòu)造對(duì)角矩陣,使用Cube代替VectorFlashAttention算法中onlineSoftmax部分的更新公式為:300I總耗時(shí)的增加遠(yuǎn)大于Vec耗時(shí)的增加?另外分析總耗時(shí)發(fā)現(xiàn),它增加了約290us:290(總耗時(shí))=60(vector)+100(cube)+70(mte1)+70(mte3)這個(gè)數(shù)據(jù)也非常不合理,因?yàn)閂ec耗時(shí)只增加了60us左右。?無論是Cube,
MTE1,
MTE3都沒有被Vec很好地掩蓋,所以他們耗時(shí)的增加也導(dǎo)致了總耗時(shí)的增加。?除優(yōu)化對(duì)角陣構(gòu)造外,另一個(gè)需要關(guān)注的點(diǎn)就是新方案下的流水調(diào)整和掩蓋,目標(biāo)是無論cube、
MTE1或MTE3
,它們的流水
能最大程度地被Vec掩蓋。Vec耗時(shí)不降反增?原Vec中onlineSoftmax的部分耗時(shí)確實(shí)已經(jīng)消減(300us左右),但構(gòu)造對(duì)角矩陣引入了額外的成本
(370us左右),此消彼長,最終導(dǎo)致Vec耗時(shí)增加了
60us左右。?
因此首先要做的,就是優(yōu)化對(duì)角矩陣的構(gòu)造邏輯,使
Vec耗時(shí)有明顯下降。這是整個(gè)方案效果的基石。 遭遇“假”VecBound性能瓶頸待根據(jù)優(yōu)化思路實(shí)現(xiàn)完一版后,測試性能卻發(fā)現(xiàn)效果與預(yù)期相差較遠(yuǎn):方案三:耗時(shí)最低,循環(huán)次數(shù)減少了16倍,vector下降10%?使用Vector操作,但是利用16*16的單位矩陣和原向量做乘法來一次生成16行的結(jié)果,并將結(jié)果直接放到m×
m的對(duì)角矩陣中。?使用Vector操作,按照行進(jìn)行遍歷,通過設(shè)置vector_mask=1,利用AscendC:add_v()方法每次在對(duì)角線上賦值一個(gè)元素。?使用Scalar指令完成:通過GetValue()、SetValue()方法,直接將目標(biāo)值賦到m×
m矩陣的對(duì)角線上
對(duì)角陣構(gòu)造方案
進(jìn)一步優(yōu)化:流水調(diào)整和掩蓋通過分析代碼和流水發(fā)現(xiàn),原來的代碼結(jié)構(gòu)在開啟double-buffer(雙緩沖區(qū))的情況下,是執(zhí)行完第一個(gè)步驟的Ping-Pong再去執(zhí)行下一個(gè)步驟的Ping-Pong:效果類似如:PingPong
Buffer通過將數(shù)據(jù)流分為兩部分(例如Tensor1和Tensor2),使得在計(jì)算Tensor1的同時(shí)可以進(jìn)行Tensor2的數(shù)據(jù)搬運(yùn)。
進(jìn)一步優(yōu)化:流水調(diào)整和掩蓋在原先的代碼流程里,得益于softmax1/2執(zhí)行時(shí)間都較長,所以cube計(jì)算都比較好地做了掩蓋,這樣的計(jì)算排布方式?jīng)]有任何問題。但是將onlineSoftmax計(jì)算移到cube之后,流水排布中產(chǎn)生了兩大變化:
Cube2中增加了onlineSoftmax步驟,耗時(shí)變長;
Softmax2中減少了onlineSoftmax步驟,耗時(shí)變短;
于是流水圖出現(xiàn)了下面的變化:
進(jìn)一步優(yōu)化:流水調(diào)整和掩蓋
經(jīng)過分析和測試,交換Softmax1-Pong和Cube2-Ping的執(zhí)行順序,類似下圖:
首先,這不會(huì)影響計(jì)算結(jié)果,因?yàn)镃ube2-Ping只依賴于Softmax1-Ping的計(jì)算完成,不依賴Softmax1-Pong的計(jì)算結(jié)果。
其次,這樣做的好處是使Cube2-Ping提前執(zhí)行,那么它就能更早地被Softmax1-Pong所掩蓋。而由于它被提前執(zhí)行結(jié)束了,依賴于它的Softmax2-Ping也能提前執(zhí)行,那么Vec之間的間隔也會(huì)減少,效果如下圖:效果:
算子總耗時(shí)下降了5%左右,整體性能提升來到了**8%**左右(1k序列場景)u
性能優(yōu)化要有整體視
角。需要從計(jì)算、內(nèi)
存搬移等多個(gè)角度考
慮。u
性能優(yōu)化中很重要的一部分內(nèi)容就是流水間的相互掩蓋。u
可以通過分析流水圖等方式,提升對(duì)流水掩蓋的直觀理解,完成流水優(yōu)化的最重要
一公里。u
考慮Pipe之間(不同計(jì)算單元、模塊)的掩蓋,如果沒有的話,即便某個(gè)pipe耗時(shí)只占1%,它的性能波動(dòng)仍然會(huì)同等程度地影響算子的總耗時(shí)。
思考基于AscendC的MC2通算融合算子性能優(yōu)化
挑戰(zhàn)2:計(jì)算效率與通信開銷的平衡?
MC2算子優(yōu)化
模型規(guī)模的指數(shù)級(jí)增長使得單設(shè)備訓(xùn)練在計(jì)算能力、存儲(chǔ)容量和能效等方面面臨根本性瓶頸,這使得分布式并行推理/訓(xùn)練從可選方案轉(zhuǎn)變?yōu)楸剡x技術(shù)路徑。以1750億參數(shù)的GPT-3模型為例,其訓(xùn)練至少需要數(shù)百GB的內(nèi)存資源。
傳統(tǒng)的單維度并行策略(如數(shù)據(jù)并行)
已無法滿足需求,而混合并行(HybridParallelism)通過同時(shí)切分計(jì)算圖(模型并行)、數(shù)據(jù)批次(數(shù)據(jù)并行)以及流水線階段(流水線并行),成為當(dāng)前主流解決方案。
昇騰CANN通過將需要切分并行的計(jì)算和通信算子進(jìn)行融合(又稱:
通算融合),實(shí)現(xiàn)了計(jì)算和通信的流水并行,從而提升性能。融合后的算子簡稱為MC2通算融合算子(
MatrixComputation&Communication)。在分布式推理/訓(xùn)練框架中,MC2性能優(yōu)化成為關(guān)鍵挑戰(zhàn)MM代表Matmul計(jì)算,
hcom代表通信任務(wù)。對(duì)Matmul計(jì)算的矩陣進(jìn)行切分,通過下一塊數(shù)據(jù)的Matmul計(jì)算與當(dāng)前數(shù)據(jù)塊的通信任務(wù)并行執(zhí)行,從而達(dá)到隱藏計(jì)算/通信時(shí)間的目的。上圖中,進(jìn)行Matmul計(jì)算的矩陣沿M軸(行)被切分為兩塊,則第二塊數(shù)據(jù)的Matmul計(jì)算和第一塊數(shù)據(jù)的通信可以并行執(zhí)行,從而通過隱藏計(jì)算時(shí)間提高算子性能。
MC2通算融合算子的性能收益MC2通算融合算子的性能收益主要來自于通信、計(jì)算的并行執(zhí)行。
瓶頸點(diǎn)1:通算時(shí)間差異大
若計(jì)算和通信任務(wù)的執(zhí)行時(shí)間相差不大,則融合后,
MC2算子的計(jì)算和通信并行執(zhí)行,能得到較好的流水掩蓋,性能收益較大。
若計(jì)算和通信任務(wù)的執(zhí)行時(shí)間差異較大,則融合后,
MC2算子內(nèi)計(jì)算和通信并行執(zhí)行,能夠掩蓋的時(shí)間較少,算子整體執(zhí)行耗時(shí)與未切分串行時(shí)的算子執(zhí)行耗時(shí)接近,此時(shí)無法獲得較大性能收益。 瓶頸點(diǎn)2:數(shù)據(jù)切分導(dǎo)致的計(jì)算或通信的執(zhí)行時(shí)間膨脹原本的整塊數(shù)據(jù)被切分成若干小數(shù)據(jù)塊,對(duì)若干小數(shù)據(jù)塊分別做Matmul計(jì)算或者執(zhí)行通信任務(wù),此時(shí)相比切分前,計(jì)算或者通信任務(wù)的執(zhí)行時(shí)間可能發(fā)生膨脹(執(zhí)行時(shí)間變長)。膨脹產(chǎn)生的原因包括:
切分后的數(shù)據(jù)塊過小導(dǎo)致計(jì)算或通信的效率降低;
切分的數(shù)據(jù)塊過多導(dǎo)致增加額外的調(diào)度開銷;
并行執(zhí)行后計(jì)算和通信對(duì)L2Cache(
L2Cache用于緩存訪問GM的數(shù)據(jù)(包括代碼段、數(shù)據(jù)段)
)或device存儲(chǔ)內(nèi)存的訪問沖突等。未發(fā)生膨脹數(shù)據(jù)切分前,
Matmul執(zhí)行時(shí)間為200us,將Matmul的輸入均勻切分為兩塊,假設(shè)切分后,每塊數(shù)據(jù)的Matmul執(zhí)行時(shí)間都是150us,通過計(jì)算的并行執(zhí)行,上圖實(shí)際性能收益為50us。數(shù)據(jù)切分前,
Matmul執(zhí)行時(shí)間為200us,將Matmul的輸入均勻切分為兩塊,假設(shè)切分后,每塊數(shù)據(jù)的Matmul執(zhí)行時(shí)間都是200us,通過計(jì)算的并行執(zhí)行,上圖實(shí)際性能收益為劣化50us。
計(jì)算和通信執(zhí)行時(shí)間較均衡的場景,有更好的流水掩蓋和性能收益;
同時(shí),性能收益也受到數(shù)據(jù)切分導(dǎo)致的執(zhí)行時(shí)間膨脹的影響。
需要制定并行切分策略,以達(dá)到最佳流水掩蓋效果。嚴(yán)重膨脹一般膨脹 瓶頸點(diǎn)2:數(shù)據(jù)切分導(dǎo)致的計(jì)算或通信的執(zhí)行時(shí)間膨脹1.判定bound場景。在制定數(shù)據(jù)切分策略前,對(duì)原始矩陣分別執(zhí)行計(jì)算和通信任務(wù),根據(jù)兩個(gè)任務(wù)的執(zhí)行時(shí)間判定bound場景。
當(dāng)K軸較大時(shí),計(jì)算量大,計(jì)算執(zhí)行時(shí)間大于通信執(zhí)行時(shí)間,此時(shí)計(jì)算為算子的瓶頸(bound);
反之,當(dāng)K軸較小時(shí),計(jì)算量小,計(jì)算執(zhí)行時(shí)間小于通信執(zhí)行時(shí)間,此時(shí)通信為算子的瓶頸。2.設(shè)定數(shù)據(jù)切分策略。
只切分M軸(行)。按M軸切分,則每行數(shù)據(jù)都是內(nèi)存連續(xù)的,滿足通信要求;若按N軸(列)切分,則每行數(shù)據(jù)都被切斷,導(dǎo)致通信數(shù)據(jù)的內(nèi)存不連續(xù),不滿足通信要求。
若A表示長塊、
B表示短塊,只能切出A或B連續(xù)排布的形式,方便任務(wù)做掩蓋。例如AAAB、
BAAA等情況。MC2優(yōu)化方案設(shè)計(jì)以MatmulAllreduce算子為例
,該算子中計(jì)算執(zhí)行在前,通信任務(wù)執(zhí)行在后。算子中的通信對(duì)象為Matmul的輸出矩陣,則通信任務(wù)的輸入shape為[M,
N]。方案設(shè)計(jì)步驟:M,
NM,
KK,
N@= 數(shù)據(jù)切分目標(biāo):盡可能多的流水掩蓋計(jì)算bound:對(duì)于同一個(gè)切分后的數(shù)據(jù)塊,計(jì)算執(zhí)行耗時(shí)大于通信執(zhí)行耗時(shí)。此時(shí),計(jì)算連續(xù),且通信的尾塊要短,如下圖所示。通信bound:對(duì)于同一個(gè)切分后的數(shù)據(jù)塊,通信執(zhí)行耗時(shí)大于計(jì)算執(zhí)行耗時(shí)
,此時(shí),通信連續(xù),且計(jì)算的頭快要短,如下圖所示。
MC2優(yōu)化方案:前置分析前置分析工作有:
確定bound場景。將輸入數(shù)據(jù)分別單獨(dú)執(zhí)行Matmul計(jì)算和AllReduce通信任務(wù),利用msProf工具(性能分析工具)分別采集執(zhí)行時(shí)間,判定時(shí)間較長的任務(wù)為對(duì)應(yīng)的bound場景。
對(duì)Matmul計(jì)算和AllReduce通信的數(shù)據(jù)量與執(zhí)行時(shí)間關(guān)系做公式擬合。將輸入數(shù)據(jù)按M軸切分,分別切成M軸為256、512、768、1024、2048的若干數(shù)據(jù)塊,這里可以根據(jù)實(shí)際情況調(diào)整切塊大小。得到的數(shù)據(jù)塊分別做AllReduce通信,利用msProf工具采集執(zhí)行時(shí)間,得到每個(gè)數(shù)據(jù)塊的執(zhí)行時(shí)間t1,t2,
...,tn。
MC2優(yōu)化方案:前置分析作圖分析數(shù)據(jù)量與對(duì)應(yīng)的執(zhí)行時(shí)間的關(guān)系,擬合得到公式t
=CostComm(m),其中m表示數(shù)據(jù)塊的M軸長度
,t表示數(shù)據(jù)塊的通信執(zhí)行時(shí)間。該映射關(guān)系一般為線性,若不滿足線性關(guān)系,可以采用分段擬合的方式。示例如下:數(shù)據(jù)量x
=
m*
N*sizeof(dataType),單位是Bytes。該擬合公式表示為:?x小于8MB:t
=
-0.9698202*x
*x
+
27.0622573
*
x
+
14.769,單
位是us。?x大于等于8MB:t
=
13.58491263*x
+
61.508333,單位是us。
MC2優(yōu)化方案:方案驗(yàn)證本MatmulAllreduce案例中,給定的輸入矩陣Shape為M=4096,
K=3072,
N=8192,數(shù)據(jù)類型為half,分核數(shù)為8,通過融合前msProf工具采集,得到該輸入的Matmul計(jì)算執(zhí)行時(shí)間為803us
,AllReduce通信執(zhí)行時(shí)間為1071us,總耗時(shí)1874us,屬于通信bound場景。按照上述的切分算法,本案例的具體切分情況如下:1.根據(jù)經(jīng)驗(yàn)值選定斷塊(bound場景中斷塊為頭塊,即切分的第一個(gè)數(shù)據(jù)塊)
M方向長度m0為384,則通信數(shù)據(jù)量x為:384*8192*2/
1024/
1024
=6MB。按通信擬合公式估算通信的執(zhí)行時(shí)間為143us??紤]可能會(huì)發(fā)生內(nèi)存帶寬沖突,因此再乘以1.15
的系數(shù),得出通信執(zhí)行時(shí)間164us。短塊經(jīng)驗(yàn)值公式,a、b、c表示根據(jù)經(jīng)驗(yàn)值給出的短塊長度的備選。?
a
*
K
*
N
>=4
*
1024
*
1024
*
1024
,a取不等式的最小值;?b
*
K
*
N/
1024+
b
*
N>=
6
*
1024
*
1024,
b取不等式的最小值;?
c>=
3
*
128
,c取不等式的最小值?m0
=
min(a,
b,
c)
MC2優(yōu)化方案:方案驗(yàn)證2.計(jì)算M方向長塊長度m1。根據(jù)短塊通信時(shí)間,配平長塊的計(jì)算執(zhí)bound行時(shí)間同樣為164us,即將t1作為長塊的計(jì)算執(zhí)行時(shí)間,帶入t1=CostMM(m1)公式,按計(jì)算擬合公式估算出該長度m1為768。3.根據(jù)M=4096、
m0=384、
m1=768,計(jì)算長塊個(gè)數(shù):(4096
-384)/768
=4.83,向下取整為4。4.根據(jù)短塊長度m0=384,長塊個(gè)數(shù)4,調(diào)整長塊m1長度:(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025南平國網(wǎng)順昌縣供電公司車輛駕駛服務(wù)項(xiàng)目駕駛員招聘模擬試卷及一套答案詳解
- 2025北京師范大學(xué)一帶一路學(xué)院教學(xué)助理招聘考前自測高頻考點(diǎn)模擬試題及答案詳解(各地真題)
- 2025廣西石化分公司春季高校畢業(yè)生招聘20人考前自測高頻考點(diǎn)模擬試題及答案詳解(考點(diǎn)梳理)
- 2025屆春季中核集團(tuán)社會(huì)招聘及實(shí)習(xí)生招聘考前自測高頻考點(diǎn)模擬試題有答案詳解
- 2025年麗水遂昌縣中醫(yī)院醫(yī)共體招聘臨時(shí)藥劑工勤人員2人考前自測高頻考點(diǎn)模擬試題附答案詳解(典型題)
- 衡水市中醫(yī)院醫(yī)療資源統(tǒng)籌與跨部門協(xié)作項(xiàng)目設(shè)計(jì)試題
- 2025年蒲江縣醫(yī)療衛(wèi)生事業(yè)單位公開招聘事業(yè)單位工作人員(23人)考前自測高頻考點(diǎn)模擬試題附答案詳解(黃金題型)
- 2025第二人民醫(yī)院超聲儀器操作規(guī)范考核
- 滄州市中醫(yī)院兒童內(nèi)分泌疾病診療考核
- 2025安徽淮北師范大學(xué)招聘高層次人才90人考前自測高頻考點(diǎn)模擬試題及答案詳解(奪冠)
- 缺血性腦卒中靜脈溶栓護(hù)理
- API SPEC 7-1-2023 旋轉(zhuǎn)鉆柱構(gòu)件規(guī)范
- 珠寶營業(yè)員銷售接待流程
- 紀(jì)檢比武試題答案及
- 2022新能源集控中心軟硬件設(shè)備采購及配套實(shí)施服務(wù)技術(shù)規(guī)范書
- GB/T 12643-2025機(jī)器人詞匯
- 學(xué)校裝飾裝修工程施工方案
- 品質(zhì)部IQC進(jìn)料檢驗(yàn)標(biāo)準(zhǔn)培訓(xùn)
- DL-T 5876-2024 水工瀝青混凝土應(yīng)用酸性骨料技術(shù)規(guī)范
- 【MOOC】數(shù)據(jù)庫原理及應(yīng)用-電子科技大學(xué) 中國大學(xué)慕課MOOC答案
- 節(jié)約集約建設(shè)用地標(biāo)準(zhǔn) DG-TJ08-2422-2023
評(píng)論
0/150
提交評(píng)論