2-Step-Qwen-Image-Edit / qwenimage /experiments /activation_experiments.py
Elea Zhong
eval activation, add module-level quantization, use sage attention 2++
3de1ebe
import pandas as pd
from collections import OrderedDict
from PIL import Image
from torchao.quantization import Float8DynamicActivationFloat8WeightConfig, Float8WeightOnlyConfig, Int4WeightOnlyConfig, Int8DynamicActivationInt8WeightConfig, Int8WeightOnlyConfig, ModuleFqnToConfig, PerRow
from qwenimage.debug import ctimed, ftimed
from qwenimage.experiment import ExperimentConfig
from qwenimage.experiments.experiments_qwen import ExperimentRegistry, QwenBaseExperiment
from qwenimage.models.attention_processors import QwenDoubleStreamAttnProcessorFA3
from qwenimage.optimization import optimize_pipeline_
@ExperimentRegistry.register(name="qwen_activations")
class Qwen_Activations(QwenBaseExperiment):
def run(self):
output_save_dir = self.config.report_dir / f"{self.config.name}_outputs"
output_save_dir.mkdir(parents=True, exist_ok=True)
self.pipe.transformer.start_recording_activations()
for i in range(self.config.iterations):
inputs = self.pipe_inputs[i]
with ctimed("run_once"):
output = self.run_once(**inputs)
output.save(output_save_dir / f"{i:03d}.jpg")
def report(self):
act_report = self.pipe.transformer.end_recording_activations()
print(act_report)
act_means, act_maxs = act_report
all_names = list(act_means.keys())
print(all_names)
data = []
for name in all_names:
actmean = act_means[name]
actmax = act_maxs[name]
data.append({
'name': name,
'mean': actmean,
'max': actmax,
})
df = pd.DataFrame(data)
df.to_csv(self.config.report_dir/f"transformer_activations.csv")
return df, act_report