python項目常見使用的傳參調試方法

簡介

你是否經常遇到下載的github開源知名項目,不知如何調試?只知道按說明的命令行運行?遇到異常或想改造也無從下手?這篇文檔章將指導你如何入手調試別人的大型開源項目。

常見項目使用說明及代碼如何調試

常見情況一

  • 使用說明: 命令行配好Python環境,執行如下腳本即可運行。
 python main.py  --modelpath '/data/model/chat'  --type 'infer'
  • 應對方法: 一般這類調用方式,在python代碼層次上都是用了 argparse 模塊, 加載參數類似于如下這樣 ,
import argparsedef main():parser = argparse.ArgumentParser(description='Process inference parameters')parser.add_argument('--model_type', type=str, help='Type of the model for inference')# Add more arguments as neededargs = parser.parse_args()

?這種情況是絕大多數項目實現外部傳參的標準形式,此時最差的方法是,找到傳參函數和位置,一個個修改代碼設置。
第二種思路是pycharm等調試器中,調試配置里輸入傳參參數(大多數人理解的)。
第三種最佳方案,調試代碼中利用sys去指定,假設我們項目中新起一個demo.py文件,大致如下:

# -*- encoding: utf-8 -*-
"""
@File    :   demo.py
@Description    :   None 
@Author    :   一只特立獨行的羱
@Contact :   未知
@License :   (C)Copyright 2019-2030,xx@Modify Time         @Version   
------------         --------
2024/7/3 14:31         1.0  
"""from swift.cli import infer
from swift.cli import web_uiimport os
import sys
#模擬命令行參數
sys.argv = ['demo.py','--model_type', 'deepseek-vl-7b-chat','--torch_dtype', 'torch.float16','--model_id_or_path', '/ai/llmdata/modelfile/deepseek-vl-7b-chat','--local_repo_path', '/ai/llmdata/home/yuanxf/DeepSeek-VL/']
#命令行參數會掛在到demo.py文件環境中,再調用下面那個需要參數的函數時,會自動從系統重獲取到
infer.infer_main()  #要調用的python函數

常見情況二

  • 使用說明: 命令行配好Python環境,執行如下腳本即可運行。
SWIFT_UI_LANG=zh WEBUI_SERVER=0.0.0.0 WEBUI_PORT=7861 WEBUI_SHARE=1 swift web-ui
  • 應對方法: 一般這類命令,很明顯可以看出這個pip install的包可以提供執行文件swift,用which命令可查看到,該文件在env的bin下放著。所以我們要看源碼中的setup.py文件,找到這個swift命令帶的不同參數映射到代碼那些文件上了。如下是我的setup.py部分內容示例:
  setup(name='ms-swift',version=get_version(),description='Swift: Scalable lightWeight Infrastructure for Fine-Tuning',long_description=readme(),long_description_content_type='text/markdown',author='DAMO ModelScope teams',author_email='contact@modelscope.cn',keywords='python, petl, efficient tuners',url='https://github.com/modelscope/swift',packages=find_packages(exclude=('configs', 'demo')),include_package_data=True,package_data={'': ['*.h', '*.cpp', '*.cu'],},classifiers=['Development Status :: 4 - Beta','License :: OSI Approved :: Apache Software License','Operating System :: OS Independent','Programming Language :: Python :: 3','Programming Language :: Python :: 3.7','Programming Language :: Python :: 3.8','Programming Language :: Python :: 3.9','Programming Language :: Python :: 3.10',],license='Apache License 2.0',tests_require=parse_requirements('requirements/tests.txt'),install_requires=install_requires,extras_require=extra_requires,entry_points={'console_scripts': ['swift=swift.cli.main:cli_main']},dependency_links=deps_link,zip_safe=False)

從這,我就基本知道swift命令是被映射到swift.cli.main:cli_main這個方法下了,在往下代碼查閱就可以找到各命令對應的邏輯。
好了,這里直接聊傳參,很明顯這類其實是系統環境,就是我們系統環境變量中存在WEBUI_PORT=7861這類。那這樣代碼層也可以等價修改命令如下:

#設置環境變量
source SWIFT_UI_LANG=zh 
source WEBUI_SERVER=0.0.0.0 WEBUI_PORT=7861 
#執行
swift web-ui

明白原理后,我們就可以新起一個demo.py文件,靠os包傳參了:

# -*- encoding: utf-8 -*-
"""
@File    :   demo.py
@Description    :   None 
@Author    :   一只特立獨行的羱
@Contact :   未知
@License :   (C)Copyright 2019-2030,xx@Modify Time         @Version   
------------         --------
2024/7/3 14:31         1.0  
"""from swift.cli import web_uiimport os
import sys# 設置系統參數
os.environ['WEBUI_SERVER'] = '0.0.0.0'
os.environ['WEBUI_PORT'] = '7861'
web_ui.run_ui() # 需要調用參數的函數

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/41524.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41524.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41524.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

16.【C語言】初識常見關鍵字 上

1.關鍵字由C語言自帶,不能自創 2.關鍵字不作變量名 3.關鍵字舉例: auto自動:每個局部變量都由auto修飾,含義:自動創建,自動銷毀 auto int a0;等價于int a0; exturn:申明外部符號 register:寄存器關鍵字…

數據治理的制勝法寶:篩斗數據技術在現代企業管理中的應用

數據治理的制勝法寶:篩斗數據技術在現代企業管理中的應用 在當今這個數據驅動的時代,企業管理的效率和競爭力越來越依賴于對數據的精準把握和高效利用。然而,隨著企業規模的擴大和業務復雜度的增加,數據治理成為了一個亟需解決的…

EasyExcel 單元格根據圖片數量動態設置寬度

在使用 EasyExcel 導出 Excel 時&#xff0c;如果某個單元格是圖片內容&#xff0c;且存在多張圖片&#xff0c;此時就需要單元格根據圖片數量動態設置寬度。 經過自己的研究和實驗&#xff0c;導出效果如下&#xff1a; 具體代碼如下&#xff1a; EasyExcel 版本 <depen…

Haxm安裝失敗的解決辦法

確認你的處理器是否是Intel的&#xff0c;如果是AMD那就無法安裝&#xff0c;如果是Intel的&#xff0c;再確認是否支持V1T 如果處理器是Intel的且支持VT&#xff0c;在開機時進入BIOS界面&#xff0c;不同的品牌進入BIOS的方法各不相同&#xff0c;通常是F2/F12/delete些&…

Python爬蟲零基礎實戰,簡潔實用!

1.爬蟲簡介 簡單來講&#xff0c;爬蟲就是一個探測機器&#xff0c;它的基本操作就是模擬人的行為去各個網站溜達&#xff0c;點點按鈕&#xff0c;查查數據&#xff0c;或者把看到的信息背回來。就像一只蟲子在一幢樓里不知疲倦地爬來爬去。 你可以簡單地想象&#xff1a;每個…

論文學習 --- RL Maximumdiffusion reinforcement learning

前言 個人拙見,如果我的理解有問題歡迎討論 (●′ω`●) 文章出處:https://techxplore.com/news/2024-05-random-robots-reliable-ai-algorithm.html 研究背景 最大擴散強化學習(MaxDiff RL)是一種創新的強化學習方法,借鑒了統計力學中的擴散過程和最大熵原理。該方法在…

Hadoop的namenode啟動不起來

1、 排查原因 Initialization failed for Block pool (Datanode Uuid a5d441af-d074-4758-a3ff-e1563b709267) service to node1/192.168.88.101:8020. Exiting. java.io.IOException: Incompatible clusterIDs in /data/dn: namenode clusterID CID-674c5515-3fe1-4a9c-881d…

AIGC技術加持,英智法律智能體來了!

法律行業作為一個由大量文件積累的領域&#xff0c;非常適合由數據驅動的AI智能體。人工智能在法律領域的應用已經成為不可逆轉的趨勢。根據最高人民法院發布的《關于規范和加強人工智能司法應用的意見》&#xff0c;國家鼓勵在司法領域廣泛應用人工智能技術&#xff0c;以提高…

四端口千兆以太網交換機與 SFP 擴展功能

在數字化時代&#xff0c;網絡基礎設施的重要性日益凸顯&#xff0c;它是企業和個人取得成功的關鍵支撐。配備 SFP 插槽的 4 端口千兆以太網交換機提供了一種靈活且可擴展的網絡解決方案&#xff0c;能夠應對快速的數據傳輸、低延遲以及不斷增長的帶寬需求。本篇文章深入探討了…

IP地址配置

1.為虛擬機配置IP地址&#xff0c;網關&#xff0c;DNS 例如&#xff1a;手動給虛擬機配置IP地址為 192.168.5.50/24&#xff1b;網關地址為&#xff1a;192.168.5.2&#xff1b;DNS地址為&#xff1a;192.168.5.2 解題步驟如下&#xff1a; #配置IP地址 [rootlocalhost ~]#…

大廠都在加急招人的大模型LLM,到底怎么學?

大模型如何入坑&#xff1f; 想要完全了解大模型&#xff0c;你首先要了解市面上的LLM大模型現狀&#xff0c;學習Python語言、Prompt提示工程&#xff0c;然后深入理解Function Calling、RAG、LangChain 、Agents等 很多人不知道想要自學大模型&#xff0c;要按什么路線學&a…

【網絡安全】第4講 身份認證技術(筆記)

一、身份認證技術概述 1、身份認證 是網絡安全的第一道防線。是最基本的安全服務&#xff0c;其他的安全服務都依賴于它。在物聯網應用系統中&#xff0c;身份認證也是整個物聯網應用層信息安全體系的基礎。 2、基本身份認證技術 &#xff08;1&#xff09;雙方認證 是一種雙…

人員定位系統在監獄中的應用也同樣重要!

監獄管理應用人員定位系統怎么樣&#xff1f;新銳科創告訴你&#xff0c;人員定位系統在監獄中的應用也是很重要的&#xff0c;運用這種新型的定位系統&#xff0c;來起到管理監獄人員的作用。 人員定位系統 在監獄中&#xff0c;關押著大量的犯人&#xff0c;所以&#xff0c…

拓撲Transformer模型TopoFormer:革新藥物研發的智能鑰匙

在藥物研發的浩瀚征途中&#xff0c;每一步都充滿了挑戰與未知。從發現潛在的治療靶點&#xff0c;到篩選出有效的藥物分子&#xff0c;再到通過臨床試驗驗證其安全性和有效性&#xff0c;這一過程往往耗時漫長且成本高昂。然而&#xff0c;隨著人工智能技術的飛速發展&#xf…

昇思25天學習打卡營第15天|ResNet50圖像分類

學AI還能贏獎品&#xff1f;每天30分鐘&#xff0c;25天打通AI任督二脈 (qq.com) ResNet50圖像分類 圖像分類是最基礎的計算機視覺應用&#xff0c;屬于有監督學習類別&#xff0c;如給定一張圖像(貓、狗、飛機、汽車等等)&#xff0c;判斷圖像所屬的類別。本章將介紹使用ResN…

【JAVA入門】Day13 - 代碼塊

【JAVA入門】Day13 - 代碼塊 文章目錄 【JAVA入門】Day13 - 代碼塊一、局部代碼塊二、構造代碼塊三、靜態代碼塊 在 Java 中&#xff0c;兩個大括號 { } 中間的部分叫一個代碼塊&#xff0c;代碼塊又分為&#xff1a;局部代碼塊、構造代碼塊、靜態代碼塊三種。 一、局部代碼塊…

c++11新特性-3-自動類型推導

文章目錄 自動類型推導1.auto1.1 const修飾1.2 auto不能使用的場景1.3 auto應用場景 2.decltype1.1 基本語法 自動類型推導 1.auto 注意&#xff0c;auto必須進行初始化 auto i 10; //int類型auto k 3.14; //double類型auto db; //錯誤1.1 const修飾 當const修改指針或者…

C++:構造函數是什么東西

一、構造函數是什么 在C中&#xff0c;構造函數是一種特殊成員函數&#xff0c;它有一下幾個明顯的特征&#xff1a; 1、它自動在創建新對象時被調用。 2、其名稱與類名相同&#xff0c; 3、沒有返回類型&#xff0c; 4、通常沒有參數&#xff08;除了默認情況下的隱式thi…

跟《經濟學人》學英文:2024年06月01日這期 The side-effects of the TikTok tussle

The side-effects of the TikTok tussle tussle&#xff1a;美 [?t?s?l] 激烈扭打&#xff1b;爭奪 注意發音 side-effects&#xff1a;副作用&#xff1b;&#xff08;side-effect的復數&#xff09; As the app’s future hangs in the balance, the ramifications of …

MySQL的并發控制、事務、日志

目錄 一.并發控制 1.鎖機制 2.加鎖與釋放鎖 二.事務&#xff08;transactions&#xff09; 1.事物的概念 2.ACID特性 3.事務隔離級別 三.日志 1.事務日志 2.錯誤日志 3.通用日志 4.慢查詢日志 5.二進制日志 備份 一.并發控制 在 MySQL 中&#xff0c;并發控制是確…