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