-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
332 executable smartnoise #341
Conversation
修正對應的 README 文件,將 mwem 方法移除。2be8c03 |
由於 #350 的調整,將說明書檔名改成 2024-01-11-Synthesizer.md - 08eb8da |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
我在 branch 332-executable-smartnoise 上用 executable_smartnoise.ipynb 試著對 adult-income [1.] 執行 issue332(),得到跟 #332 幾乎一樣的結果:
- smartnoise-aim: ValueError: Synthesizer aim not found
- smartnoise-mwem: MemoryError: Unable to allocate 1.87 TiB for an array with shape (256842399744,) and data type int64
- smartnoise-mst: ModuleNotFoundError: No module named 'disjoint_set'
- smartnoise-pacsynth: ValueError: Input contains NaN.
我沒有辦法復現你修繕的結果。我建議
- 先在你可以執行成功的環境下,列出你相關套件的版本,我們先盤點一次是否跟 requirement.txt 一致
- 如果不一致,例如 'disjoint_set',是否可以加入 pyproject.toml
- 如果有相依性衝突,嘗試在 pyproject.toml 上手動強制升級所需套件並輸出 requirement.txt,之後在一個全新的環境下,依照 requirement.txt 安裝,再嘗試一次 smartnoise 這些檢查
另外我看到你有 issue332_gan(),我的理解是打開 scaler_inhibit = True
就可以解決 Scaler 不應該設定的問題,但我不管開跟關都獲得相同錯誤:
- smartnoise-dpctgan: RuntimeError: all elements of input should be between 0 and 1
- smartnoise-patectgan: RuntimeError: all elements of input should be between 0 and 1
- 如果你把 dev 抓到這個 branch,需要改用 benchmark://adult-income,此時檔名為 adult-income.csv,但這才是我們之前用的 adult
我先執行了一次 poetry lock 試圖提版,以下是有提升的部分:
感覺都沒有立即跟這個 issue 有關,但我們一步步解,我 commit poetry.lock 在 2e8ddd8 |
1、3 是我有更新套件跟加裝 smartnoise doc 說要裝的套件 |
剛剛再去確認第四點的問題,根據 smartnoise 的官方文件: "... To achieve this dimensional fidelity, the pac-synth synthesizer will sometimes generate rows with missing values.",因此合成資料本身會產生 NA 值,導致 inverse_transform 失敗。看起來 pacsynth 這樣的行為是無法被控制的,因此我建議看 Processor 這邊我能不能做一些調整,或者直接不使用這個 method。 |
更新 pyproject.toml 關於用 Poetry 設定環境的指令 - 6817af1 由於 poetry 軟體相依性問題過於嚴格(見 poetry/issues/697) |
|
還需要加 備註會遇到的 error:
其實這兩個問題都是已知,smartnoise 在 Faker 上卡住 rdt,以及 torch 上版本依賴太舊。我們現在用 pip 強制安裝 smartnoise-synth 1.0.3,我接著會做測試、測試完會重編 pyproject.toml 跟 requirement.txt,再看效果 |
我本機測試完畢,並做出改動 - b536c87
以後必須要以 requirement.txt 為核心,暫時不以 pyproject.toml 管理版本 |
SageMaker 報錯 - a6d4b2a
實際執行後 SDV 沒裝起來 |
更新: 移除對 pywin32 的需求,試圖在 SageMaker 繼續安裝其他地方,仍然失敗 - 364e860
由於不能靠 requirements.txt 完整安裝當前功能的依賴套件,我擔心這件事情不應該跟使用者說「你就照順序 pip install 就好」,我尋求 @mileschangmoda 的建議,在解決 requirement.txt 的疑慮之前,我傾向不 approval 這個 PR |
如果使用 conda 讀入 requirements.txt 建立環境,會出現以下錯誤訊息:
|
這是可行的,但必須確保 pip install 可以保持不變 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
原先由於要繞過 smartnoise 的資料前處理,因此使用了其提供的 IdentityTransformer,卻發現會引起其他問題。後來接受 smartnoise 的前處理方式:因為其對類別資料的前處理只有轉換為 LabelEncoder,不需要 epsilon。為了修正此 bug,做了以下變更:
將 encoder、discretizing 的輸出皆調整為 pd.Categorical。 5f93456 987447e
接受 smartnoise 的前處理方式。 8994fc6
新增與調整 demo 檔案。 1801d9b af94b5e