Your first experiment in Studio¶
Open Studio on the web, or follow the uv installation steps for the packaged local app. Studio, PyTorch and pywebview install together by default.
Get Started now offers Signal Generator first, then existing datasets and CSV upload. The Signal Generator guide walks through creating and inspecting a waveform and creating a PA Input Dataset, then explicitly simulating a Virtual PA output in the PA Library to make paired synthetic data. Each PA Model and DPD Model workspace contains Training and Testing tabs; Testing displays the selected split's exact complex I/Q count.
Studio opens locally in your browser, or in a native window if you installed the desktop extra. The interface and experiment services are the same in both.
1. Open and inspect a dataset¶
On Home, click Get Started → Use an existing dataset and choose DPA_200MHz. Studio opens PA Training with dataset making already complete in the workflow diagram. Use the Datasets sidebar to inspect the paired capture. Alternatively choose Signal Generator, generate x, then Choose Virtual PA → Simulate PA output → Dataset details → Configure experiment.
The dataset page shows input/output I/Q signals, sample rate, bandwidth and signal quality. Use the Dataset Doctor tab to inspect findings, then Configure experiment to continue. Built-in measured datasets keep their supplied splits; MyCustomPA is explicitly labeled synthetic tutorial data.
Use Get Started → Upload CSV to upload your own I/Q data. Studio validates the complete CSV in quarantine before preview. Invalid files are deleted. During the hosted trial, 2 hours without user activity clears the temporary workspaces created from that IP. Background polling and running jobs do not extend this deadline. Scheduled cleanup still removes all session files within 12 hours. The persistent top bar shows the earlier cleanup deadline in UTC. Download your results before that time. See import and preprocessing for local workflows.
2. Train and test a PA model¶
In PA Model Training, choose the dataset and model architecture. Under Starting settings, choose Quick trial for a short pipeline check (a smoke recipe) or Full training for a longer budget. Pick an available device and review the configuration. Continue through the review steps, optionally name the run, then click Start run.
The experiment form offers models from the shared registry. Advanced parameters come from that registry too; the server validates them before a run can start. Use the PA test step after a successful PA run to inspect predictions on held-out data.
During training, watch the NMSE curve, progress and signal comparisons. The view reports the configured and actual batch sizes, I/Q samples per sequence and sample rate. Live probe scores are previews; the final test result is identified separately.
Select a GPU on your computer¶
In local Studio, Device lists each detected NVIDIA GPU separately, for example GPU 0 (cuda:0) · NVIDIA GeForce RTX 4090 and GPU 1 (cuda:1) · NVIDIA GeForce RTX 4090, alongside CPU and detected Apple MPS. The same selector is available in PA and DPD Training and Testing. Settings → Devices also lists the individual cards.
Select a different GPU for each independent job and start both runs. Local Studio runs jobs on different GPUs concurrently; jobs assigned to the same GPU wait for that GPU's current Studio job to finish. Each run's configuration, device label and report retain the selected index. An unavailable index is rejected before submission; Studio never moves the job to another device silently.
For JSON configurations, choose GPU 1 with
"execution": {"device": "cuda", "device_index": 1}.
Existing configurations that omit device_index still select GPU 0.
Indices follow PyTorch's visible-device order: if you set CUDA_VISIBLE_DEVICES
before launching Studio, the selected physical cards are renumbered starting at
cuda:0. Restart Studio after changing that environment or the installed GPUs.
The hosted Studio at opendpd.com lists the server's devices and keeps its shared
compute queue. To use the GPUs on your own computer, install and launch local
Studio with opendpd gui.
3. Train and test DPD¶
Choose a DPD training recipe and select a successful PA run on the same dataset as its surrogate. The service checks checkpoint compatibility, including seed and frame length, before starting.
The chain is x → u = DPD(x) → y = PA(u). The last stage uses the learned PA model and is labeled simulated. Inspect ACLR/NMSE or the metrics available under the selected profile, plus without/with-DPD signal comparisons. The result also records how much of the predistorted input lies outside the surrogate's fitted amplitude range.
The DPD test/apply step exports u, the predistorted PA input, with metadata identifying the signals and checkpoints used. It can score the cascade through the selected surrogate. This is not a measured linearized PA output; follow the measured DPD guide for physical captures.
PSD plots are separated into DPD Input (x), DPD Output / PA Input (u), and PA Output (y and its output references/baselines). The initial dB scales match; each chart has its own legend and zoom. See signal-chain spectra.
4. Follow progress in the terminal¶
The Terminal bar at the bottom starts collapsed. It highlights with a Running status while an experiment is active. Expand it to read the worker's actual output.
Its tabs follow the experiment step when you move from PA to DPD. You can also select an earlier step's terminal or another run without navigating away from the current experiment. The run-detail Logs tab provides the saved log and filtering controls.
Quick trial defaults to 10 epochs and full training to 150 epochs. Plots update once per epoch. PA previews reuse evaluation output; DPD previews capture x, u and PA(u) in one bounded shadow-model validation pass. Under Advanced settings → Plot updates, you can choose a batch interval. This option and its warning are red: extra previews can severely slow training. The chosen cadence is saved with the run and shown above its plots. See Visualization for live and saved plot behavior.
5. Keep and compare the results¶
- Run detail: inspect metrics, logs, artifacts and the resolved configuration. Reloading the page does not submit another run.
- Configuration: download the JSON or use Re-run with this configuration. The same configuration can run through
opendpd run --config. - Results: select results to compare metrics, spectra and configuration differences. Incompatible datasets, profiles, references or evidence types are explained and are not ranked together.
- Export: create a share package or a full private package, and generate HTML/Markdown reports. Share packages omit raw PA data and worker logs; full packages include the data. See the package protocol.
For classical MP/GMP fits, streaming and deployment, continue to Advanced guides.
Language, theme and reset¶
The language menu offers English, Dutch and Chinese first, followed by French, German, Italian, Japanese, Korean and Spanish. Your choice is stored in the workspace. Interface text and generated report prose are localized; raw worker logs, commands, configuration keys, user text and GitHub messages retain their original text for provenance.
Select a light, dark or system theme in Settings. The layout adapts to the window size. Interactive plots can be panned and zoomed; double-click to fit, and an automatic fit recovers views that have moved too far from the data.
Reset page restarts the current page's workflow after a confirmation explaining what progress will be removed. Cancel keeps it; continue only when you want to start that page again. Reset Studio has a broader scope and its own confirmation.
Launch options¶
| Option | Effect |
|---|---|
--workspace DIR |
Choose the data/results directory; default is $OPENDPD_WORKSPACE or ~/opendpd-workspace. |
--port N |
Use exactly this port; otherwise use the first free port starting at 8765. |
--browser |
Open the system browser even if the native backend is available. |
--window |
Require a native window and report why it cannot start. |
--no-browser |
Print the local session URL for a headless or SSH session. |
A second launch for the same active workspace opens the existing instance. Close Studio or press Ctrl+C to stop the launcher; active workers trigger a confirmation before shutdown.
The native window uses the operating system's web view. Run opendpd doctor for backend diagnostics; on Linux a WebKit2GTK installation may need python3-gi gir1.2-webkit2-4.1, or use the Qt backend installed by default on Linux. Consult the support matrix for verified platforms.
For remote use, keep the server on loopback and use an SSH tunnel, for example ssh -L 8765:127.0.0.1:8765 host, with --no-browser on the host. If the session expires, reopen the current launcher's URL. Other setup problems are covered in Installation.
ILC and formulas (2.2.5)¶
PA Training/Testing includes an ILC linearization tab; DPD Training/Testing includes an ILC-DPD / Ideal benchmark tab. Both use the same bounded, recorded controller and ILA fitting workflow described in the ILC guide. Select a trained PA reference first. The main score is the fitted DPD on held-out input; the Ideal test-waveform feedback result is labelled separately.
Virtual PA equations and result metric formulas use local LaTeX rendering. Click a formula coefficient or its parameter field to highlight the pair. Next-step buttons appear above configuration fields. The result's calculation-method chip uses a descriptive name; expand Metric definitions to change the method or inspect its recorded version.
Server load¶
Open Server load to check active sessions, running/queued jobs and CPU/RAM/GPU usage. The public app separates its API virtual machine from the compute host. Values refresh every five seconds while the page is visible; unavailable values appear as a dash. See server load and cleanup for the counting rules.
Inspect an individual signal¶
Open Signal Analyzer from the sidebar or use Open in Signal Analyzer on a generated input, PA output or dataset. Upload real or complex CSV, confirm sample rate, choose a contiguous sample range and press Analyze signal. See the Signal Analyzer guide for measurement settings and JSON/PSD exports. Analysis alone does not create paired PA training data.