記一次ComfyUI工作流bug查找過程 原創(chuàng)
“ 經(jīng)驗(yàn)主義不可犯,否則是需要付出代價(jià)的 ”
在上一篇文章中說過最近在做ComfyUI工作流方面的業(yè)務(wù),具體的可以看之前的文章——??再談大模型工作流技術(shù)之——ComfyUI框架??。
由于ComfyUI并不是一個(gè)組織或企業(yè)開發(fā)的,因此它目前的生態(tài)還不夠完善,甚至沒有一個(gè)完善的官方文檔。特別是對(duì)程序員來說,想使用ComfyUI的接口要么自己去網(wǎng)上找一些別人使用接口的說明或者是去github上自己翻官方提供的一些簡(jiǎn)單案例。
而這次問題就出在接口上。
ComfyUI工作流問題
在上一篇文章中說,ComfyUI就是一個(gè)工作流配置工具,它通過web頁面根據(jù)具體的業(yè)務(wù)需求進(jìn)行配置,一個(gè)工作流由多個(gè)節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)可以完成特定的功能,比如說調(diào)用大模型。
而工作流經(jīng)過煉丹師的配置,就可以調(diào)用不同的大模型來完成特定功能的任務(wù),而工作流最終的輸出結(jié)果是一個(gè)JSON配置文件,開發(fā)人員就可以通過對(duì)這個(gè)JSON文件的特定節(jié)點(diǎn)進(jìn)行調(diào)整,然后把調(diào)整之后的JSON內(nèi)容上傳到ComfyUI服務(wù),即可獲得特定的效果。
今天的這個(gè)問題就出在這個(gè)JSON文件上,在剛開始的認(rèn)知中,這個(gè)JSON文件就相當(dāng)于一個(gè)模板,根據(jù)不同的需求把參數(shù)替換一下就行了。
而今天使用ComfyUI github倉庫中提供的案例代碼,去訪問ComfyUI服務(wù)端,使用煉丹師提供的json文件去獲取結(jié)果。
JSON文件是經(jīng)過測(cè)試的,在web頁面上可以成功生成需要的圖片;而使用官方提供的prompt接口生成圖片時(shí),通過websocket監(jiān)聽服務(wù)端的生成狀態(tài),當(dāng)服務(wù)端響應(yīng)生成完成時(shí),則調(diào)用history接口獲取任務(wù)執(zhí)行的結(jié)果。
而就是在這一步,通過history接口響應(yīng)的狀態(tài)都是成功的,但就是沒有返回生成文件的名稱和路徑。
然后就把github上提供的幾個(gè)案例都在服務(wù)器上跑了一下,結(jié)果都獲取不到。
而之前做的一個(gè)視頻生成的業(yè)務(wù),調(diào)用ComfyUI工作流就可以獲取到。
因此,這時(shí)就想到一個(gè)思路,既然案例代碼都不行,那么是ComfyUI本身的bug,還是現(xiàn)在的環(huán)境有問題?
因此,這時(shí)就找到在之前視頻生成的代碼,把視頻生成的業(yè)務(wù)給跑一遍,結(jié)果發(fā)現(xiàn)視頻生成竟然是正常的。
而且在此之前,還把ComfyUI github上的代碼下載到了本地,看了一部分源碼也沒發(fā)現(xiàn)問題在哪。
ComfyUI github地址
??https://github.com/comfyanonymous/ComfyUI/tree/master/script_examples??
而最終是怎么解決這個(gè)問題的呢?
其實(shí)解決這個(gè)問題更多的是一種運(yùn)氣,因?yàn)閺睦碚撋蟻碚f,官方提供的案例代碼一般情況下不會(huì)有什么問題,因此我就把官方的案例代碼給跑了好多遍,每一遍都會(huì)把它們輸出的結(jié)果拿出來對(duì)比一下。
因此,在跑視頻生成業(yè)務(wù)的時(shí)候,又習(xí)慣性的看一下接口輸出,結(jié)果發(fā)現(xiàn)視頻業(yè)務(wù)和圖片生成業(yè)務(wù)在JSON內(nèi)容上有區(qū)別。
畢竟是兩種完全不同的業(yè)務(wù),有區(qū)別其實(shí)也是正常的,但根據(jù)自己的經(jīng)驗(yàn)來說,在視頻生成業(yè)務(wù)中有一個(gè)節(jié)點(diǎn)是關(guān)于文件存儲(chǔ)的,但在圖像業(yè)務(wù)中就沒有這個(gè)節(jié)點(diǎn)。
這時(shí),這個(gè)節(jié)點(diǎn)就引起了我的注意,剛好問了一下煉丹師,煉丹師說視頻業(yè)務(wù)和圖像業(yè)務(wù)在存儲(chǔ)方式上不一樣,圖像業(yè)務(wù)有一種存儲(chǔ)方式可能會(huì)有問題,因此就沒有用。
所以,為了驗(yàn)證是否是這個(gè)問題,就讓煉丹師把存儲(chǔ)方式給改了一下;這時(shí)圖像生成就能正常返回了。
之所以寫這篇文章的目的,并不是說這個(gè)問題本身,而是說很多時(shí)候人會(huì)陷入經(jīng)驗(yàn)主義;在剛開始從來沒想過JSON文件會(huì)有問題,其次即使JSON文件有問題最多只是會(huì)影響圖片的生成,但沒想到會(huì)影響接口的返回。
本文轉(zhuǎn)載自公眾號(hào)AI探索時(shí)代 作者:DFires
