在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > 有沒有什么可以節(jié)省大量時間的 Deep Learning 效率神器?

            有沒有什么可以節(jié)省大量時間的 Deep Learning 效率神器?

            發(fā)布人:計算機視覺工坊 時間:2022-12-22 來源:工程師 發(fā)布文章
            作者丨金瀛若愚@知乎(已授權(quán))

            來源丨h(huán)ttps://www.zhihu.com/question/384519338/answer/2620482813 編輯丨極市平臺1. 每個實驗保存完整config + wandb遠程追蹤

            還在給model取巨長的文件名來記錄其超參嗎?out了。wandb可以把config和結(jié)果曲線同步云端供橫向評比和查看。同步云端的代碼:

            def wandb_init(cfg: DictConfig):
                wandb.init(
                    project='best paper',
                    group=cfg.exp_group,
                    name=cfg.exp_name,
                    notes=cfg.exp_desc,
                    save_code=True,
                    config=OmegaConf.to_container(cfg, resolve=True)
                )
                OmegaConf.save(config=cfg, f=os.path.join(cfg.ckpt_dir, 'conf.yaml'))

            這里的OmegaConf下面會講到。想不起來某個實驗的model存在哪了?看wandb的界面查找每個config值

            圖片

            wandb 查看config

            對應(yīng)每個實驗的curves

            圖片

            wandb查看曲線

            2. Hydra+OmegaConf配置管理

            OmegaConf是Meta出的配置管理工具,可將yaml文件轉(zhuǎn)成有對應(yīng)變量名的Python的class或dict。支持默認值、合并和override、導(dǎo)出成yaml或json等,十分好用。你再也不用手寫配置管理了。

            比如:

            blob_root: /yjblob
            exp_name: best_paper_2
            ckpt_dir: ${.blob_root}/${.exp_name}/ckpt
            log_dir: ${.blob_root}/${.exp_name}/log

            上面是config.yaml的片段,OmegaConf.resolve(cfg) 一句即可把blob_root和exp_name 的值填進 ckpt_dir里。而普通的yaml是不支持變量的。

            Hydra是Meta出的實驗提交工具,支持在命令行里動態(tài)修改OmegaConf里面的數(shù)值。Hydra支持一個config里引用另一個config,于是你可以很容易的切換用db=mysql還是db=postgresql:

            ├── conf
            │   ├── config.yaml
            │   ├── db
            │   │   ├── mysql.yaml
            │   │   └── postgresql.yaml
            │   └── __init__.py
            └── my_app.py 

            而且,這個OmegaConf的配置(DictConfig類型)可以轉(zhuǎn)成Python的dict然后傳給wandb,打通全場(見第一節(jié)的示例代碼)。

            3. Plotly導(dǎo)出可交互的曲線

            Matplotlib不支持交互,生成的曲線無法還原每個點的值。Tensorboard和wandb的網(wǎng)頁 支持交互,但不容易導(dǎo)出,而且其內(nèi)置的precision-recall曲線等函數(shù)無法深度定制,只適合于畫一些loss和lr曲線。Plotly就很強了。

            圖片

            鼠標浮動,查看內(nèi)容

            當然也可以做定制化的precision-recall曲線。比如我希望看不同threshold下的precision, recall和false positive ratio,這樣的定制化曲線wandb等并不支持,就可以用plotly

            df = DataFrame({
                'thres': thresholds,
                'prec': prec_data1,
                'recl': recl_data1,
                'fp': fp_data2
            })
            df = df.melt(id_vars=['thres'], value_vars=['prec''recl''fp'], var_name='curves')
            fig = px.line(df, x='thres', y='value', color='curves', markers=True)
            fig.update_xaxes(range=[0, 1])
            fig.update_yaxes(range=[0, 1])
            fig.update_traces(mode="markers+lines", hovertemplate=None)
            fig.update_layout(hovermode="x")
            fig.write_html(os.path.join(self.cfg.ckpt_dir, 'curves.html'), auto_play = False)

            里面的hovermode指定移動鼠標時顯示相同x值的不同y值:

            圖片

            這還沒完,wandb支持把plotly生成的可交互網(wǎng)頁嵌入到wandb里

            import wandb
            import plotly.express as px

            # Initialize a new run
            run = wandb.init(project="log-plotly-fig-tables", name="plotly_html")

            # Create a table
            table = wandb.Table(columns = ["plotly_figure"])

            # Create path for Plotly figure
            path_to_plotly_html = "./plotly_figure.html"

            # Example Plotly figure
            fig = px.scatter(x = [0, 1, 2, 3, 4], y = [0, 1, 4, 9, 16])

            # Write Plotly figure to HTML
            fig.write_html(path_to_plotly_html, auto_play = False) # Setting auto_play to False prevents animated Plotly charts from playing in the table automatically

            # Add Plotly figure as HTML file into Table
            table.add_data(wandb.Html(path_to_plotly_html))

            # Log Table
            run.log({"test_table": table})
            wandb.finish()

            以上便完成了Hydra+OmegaConf+wandb+plotly的打通。

            4. 使用遠程GPU服務(wù)器/集群的一些技巧

            如果要使用遠程的服務(wù)器,常見問題在于遠程debug、代碼從本地同步到遠程以及ssh斷線重連問題。這些可以使用VS Code解決。

            1. 可以設(shè)置用得到的所有遠程服務(wù)器,每個服務(wù)器配置好ssh,便于隨時登錄。下圖的REMOTE EXPLORER里除了SSH Targets還有Containers,即可以直接ssh到服務(wù)器的docker container里。container的運行命令可以設(shè)置vs code自動完成。
            圖片
            1. 每個服務(wù)器都能從本地登錄的git賬戶里clone代碼。Clone之后下次可以直接遠程打開這個repo
            圖片
            1. 編輯Run and Debug設(shè)置(launch.json),可以預(yù)先設(shè)置training,testing等實驗對應(yīng)的命令行參數(shù)和環(huán)境變量,以后點對應(yīng)的按鈕就直接運行該實驗。不用每次手動復(fù)制參數(shù)
            圖片
            1. 在repo里開一個文件夾,加入gitignore。每次做可視化圖片的時候,把圖片存到這個文件夾,即可通過vscode遠程看圖,不需要每次ssh下載到本地。VS Code也支持內(nèi)建ipynb文件來一邊寫一邊運行。

            本文僅做學(xué)術(shù)分享,如有侵權(quán),請聯(lián)系刪文。



            *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



            關(guān)鍵詞: AI

            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉