取消
顯示的結果
而不是尋找
你的意思是:

錯誤使用多莉部署為一個REST API

GKH”id=
新的貢獻者二世

我們部署了多莉(https://huggingface.co/databricks/dolly-v2-3b在我們的基礎設施)作為REST API端點。我們使用的筆記本是包含在文本下麵我的問題。

使用的磚下文有如下配置(13.2毫升,GPU,引發3.4.0 g5.2xlarge)。

多莉執行完全在筆記本,沒有任何問題。我們創建了兩個鏈子Langchain測試執行。第一個是香草鏈,可用於直接回答問題,而且沒有提供上下文。第二個是一個上下文連鎖問答。兩個完美的工作。

模型的創建、注冊和部署本身進展順利,盡管它沒有任何問題需要很長時間(~ 20 +分鍾有時…)

出現問題當我們試圖訪問模型間接通過REST接口或通過加載登錄和注冊模型使用它的URI。我上傳了錯誤的附加圖像。

從這裏,我們嚐試了各種嚐試和調試錯誤,看看我們可以自己修複它,但無濟於事。我們已經嚐試改變輸入格式,通過列表而不是字符串,Dataframes而不是字符串,運行時版本變化,改變我們的日誌方式(使用mlflow.pyfunc模型。log_model代替mlflow.langchain.log_model),嚐試各種JSON格式符合MLflow JSON文檔輸入model-served REST api。

在所有情況下,我們得到了這個錯誤。從我們調試的嚐試,似乎提示,是形成以某種方式返回,但明確包括提示作為參數一次模型已被記錄為Langchain模型是不允許的(換句話說,輸入模式中的編譯和輸入模式時需要某些關鍵詞的提示)。

我們花了很多時間和GPU周期試圖讓這個相當簡單的用例的工作。有人在這個社區有任何了解我們可能做錯了嗎?

任何幫助將不勝感激!

提前謝謝!


- - - - - - - - - - - - - - - - -開始筆記本代碼- - - - - - - - - - - - - - - - - - - - - - - -

#磚筆記本的來源
#魔法% pip安裝- u mlflow langchain numpy = = = = 0.0.164變壓器1.24.4 sqlalchemy = = 2.0.17

- - - - - - - - - - - #命令

dbutils.library.restartPython ()

- - - - - - - - - - - #命令

進口 火炬
變形金剛 進口 管道

generate_text = 管道( 模型 = “磚/ dolly-v2-3b” , torch_dtype = 火炬 .bfloat16,
trust_remote_code = 真正的 , device_map = “汽車” , return_full_text = 真正的 )

- - - - - - - - - - - #命令

langchain 進口 PromptTemplate, LLMChain
langchain.llms 進口 HuggingFacePipeline

#一個輔導沒有輸入的模板
提示 = PromptTemplate (
input_variables = ( “指令” ),
模板 = {說明} )

#模板與輸入指令
prompt_with_context = PromptTemplate (
input_variables = ( “指令” , “背景” ),
模板 = {說明} \ n \ n 輸入: \ n {上下文} )

hf_pipeline = HuggingFacePipeline ( 管道 = generate_text )

llm_chain = LLMChain ( llm = hf_pipeline , 提示 = 提示 )
llm_context_chain = LLMChain ( llm = hf_pipeline , 提示 = prompt_with_context )

- - - - - - - - - - - #命令

打印 ( llm_chain .predict ( 指令 = “我解釋核裂變和核聚變的區別。” ).lstrip ())

- - - - - - - - - - - #命令

上下文 = ”““喬治·華盛頓(1732年2月22日[b]——12月14日,1799年)是一個美國軍官,政治家,
和開國元勳曾擔任美國第一任總統從1789年到1797年。”“”

打印 ( llm_context_chain .predict ( 指令 = “喬治·華盛頓總統是什麼時候?” , 上下文 = 上下文 ).lstrip ())

- - - - - - - - - - - #命令



- - - - - - - - - - - #命令

進口 mlflow
進口 熊貓 作為 pd
json 進口 轉儲
def publish_model_to_mlflow ( llm_chain , chain_name :disappointed_face:”title=
mlflow .start_run () 作為 運行 :
# MLFlow保存模型
#注意這隻保存langchain管道(我們也可以添加聊天機器人的自定義模型包裝類)
#矢量數據庫模型以外的生活
mlflow .langchain.log_model ( llm_chain , artifact_path = “ketos-gpt——” + chain_name )
model_registered = mlflow .register_model ( f ”:/ { 運行 .info.run_id } / gpt - { chain_name } , “gpt——” + chain_name )
#移動模型在生產
客戶端 = mlflow .tracking.MlflowClient ()
打印 ( “注冊模型版本” + model_registered .version + “生產模式” )
客戶端 .transition_model_version_stage ( “gpt——” + chain_name , model_registered .version, 階段 = “生產” , archive_existing_versions = 真正的 )
def load_model_and_answer ( 問題 , model_uri :disappointed_face:”title=
#注意:這將再次在內存中加載模型
#加載langchain管道和推論
= mlflow .pyfunc.load_model ( model_uri )
打印 ( 類型 ( ))
#鏈= mlflow.langchain.load_model (model_uri)
.predict ([{ “指令” : 問題 }))

- - - - - - - - - - - #命令

publish_model_to_mlflow ( llm_chain , “dolly-3b-vanilla” )

- - - - - - - - - - - #命令

問題 = “哪個是印度位於大陸?”
chain_name = “dolly-3b-vanilla”
model_name = “gpt——” + chain_name
model_version = 6
model_uri = f “模型:/ { model_name } / { model_version }
load_model_and_answer ( 問題 = 問題 , model_uri = model_uri )

0回答0
歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map