CommunityRecherche & Datenanalysegithub.com

KPP-Energiemodell-Fähigkeit

Integration von PyTorch-Modellen mit Kaiwu-Samplern für Energiemodell-basierte Aufgaben wie RBM, BM, DBN, QVAE, QDiffusion und MAIFS-Feature-Selection. Sorgt für Installation und Verifizierung des kaiwu-torch-plugin-Pakets.

Was ist KPP-Energiemodell-Fähigkeit?

Diese Fähigkeit ist für den Aufbau, das Training und die Integration von PyTorch-Energiemodellen mit dem Kaiwu PyTorch Plugin (KPP) zuständig. Sie deckt eine breite Palette von Modellen ab, darunter Restricted und allgemeine Boltzmann Machines (RBM/BM), Deep Belief Networks (DBN), Quantum Variational Autoencoders (QVAE) mit Energiemodell-Prior, energiegesteuerte diskrete Sequenzgenerierung (QDiffusion) und die MAIFS-Feature-Selection für PyTorch-Modelle. Die Fähigkeit automatisiert die Umgebungsprüfung, Installation von `kaiwu-torch-plugin`, Abhängigkeitsauflösung und Import-Verifikation. Sie arbeitet mit verschiedenen Sampling-Backends zusammen, einschließlich lokaler Sampler und der Kaiwu SDK (SA/CIM), und hält strenge Trainingsverträge ein, um korrekte Gradientenflüsse, Geräteverwaltung (CPU/GPU) und die Einhaltung von API-Signaturen sicherzustellen. Sie ist ideal für jede Aufgabe, die Energiemodelle in PyTorch einbindet, und vermeidet die fälschliche Anwendung auf Standard-Neuronale Netze oder reine Optimierungsprobleme. Die Fähigkeit bietet detaillierte Referenzen zu Modellparadigmen und Installationsanleitungen und erzwingt bei der Cloud-Nutzung von Kaiwu CIM konsistente Task-Benennungskonventionen (`kpp-skill-*`).

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/qboson/kpp-coding-skill/tree/main

Installed? Explore more Recherche & Datenanalyse skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

KPP-Energiemodell und Sampling

Zuständig für die Integration von PyTorch-Modellen mit Kaiwu-Samplern. Modellparameter, Zielfunktionen und Optimierer verbleiben in PyTorch; über kompatible Sampler werden Kaiwu-Löser oder vorhandene Sampling-Workflows der Aufgabe angebunden. Normale maschinelle Lernaufgaben werden nicht automatisch in Energiemodell-Aufgaben umgewandelt.

Komponentenauswahl

Wählen Sie zuerst die Struktur basierend auf Eingabe, Ausgabe und den darzustellenden Beziehungen aus und erläutern Sie, wie die gewählte Komponente die Aufgabenanforderungen erfüllt. Wenn der Benutzer eine bestimmte Struktur vorgibt, führen Sie diese aus; bei eigener Auswahl beurteilen Sie, ob die Aufgabe direkte Beziehungen zwischen beobachteten Variablen, verborgene Faktoren, hierarchische Darstellungen, latente Variablen-Rekonstruktion, kontextabhängige Generierung oder Merkmalsauswahl benötigt, und wählen Sie die entsprechende Komponente. Die Modellgröße ist nicht die Standardpriorität; validieren Sie zuerst, ob die Fähigkeiten und Ergebnisse übereinstimmen, und vergleichen Sie dann Trainings- und Sampling-Kosten zwischen Lösungen, die die Anforderungen erfüllen.

Benötigte FähigkeitKomponenteBegründung
Erklärung von Beobachtungsmustern durch verborgene Faktoren oder Lernen einer sichtbaren/verborgenen bipartiten StrukturRestrictedBoltzmannMachineDie verborgene Repräsentation ist für die vom Task benötigte Verteilungslernaufgabe erforderlich; eine rein binäre Eingabe allein rechtfertigt nicht die Verwendung von RBM
Direkte Modellierung paarweiser Interaktionen binärer Knoten oder Sampling nach Fixierung bestimmter KnotenBoltzmannMachineKnoten und ihre Interaktionen entsprechen den Problemvariablen; mit Aufgabenmetriken wird verifiziert, ob sie ausreichen, um die erforderlichen Beziehungen auszudrücken
Erlernen hierarchischer Merkmale durch mehrschichtige RBMsUnsupervisedDBNDie Aufgabe benötigt schichtweise gelernte Repräsentationen, oder der Benutzer fordert explizit einen RBM-Stapel
Kodierung, Rekonstruktion und abtastbarer Energiemodell-Prior latenter VariablenQVAESowohl Rekonstruktion als auch latenter Prior dienen dem Task; ein normaler Autoencoder wird dadurch nicht zu QVAE
Kontextabhängige diskrete Kandidatengenerierung mit Energie-SteuerungQDiffusionDer Proposal liefert den benötigten Kontext, die Energie führt eine aufgabenspezifische Steuerung der Kandidaten durch
Auswahl einer Merkmalsteilmenge aus den Eingaben eines vorhandenen PyTorch-ModellsFeatureSelectionWrapperDie Aufgabe erfordert eine Eingabe-Merkmalsauswahl unter Verwendung einer periodisch aktualisierten 0/1-Maske

Binäre Daten, die Anzahl der Labels oder die Reihenfolge des Auftretens von Beispielen allein können die Auswahl nicht bestimmen. Validieren Sie die Auswahl anhand der vom Task geforderten Ergebnisse wie Assoziation, Rekonstruktion, Vervollständigung oder Vorhersage; ein erfolgreicher Import oder korrekte Ausgabeformen allein bedeuten keine Übereinstimmung. Wenn der Task höherwertige Beziehungen oder Kontext erfordert, reicht es nicht aus, nur auf paarweise statistische Erfüllung zu achten. Die unterschiedlichen Trainingsstrukturen von BM und RBM finden Sie unter Modellparadigmen; lesen Sie nur den für die aktuelle Aufgabe relevanten Teil.

Dies sind verschiedene Komponenten desselben KPP-Pakets; es müssen nicht sechs Plugins separat installiert werden. Obwohl die Merkmalsauswahl intern ein QUBO löst, dient sie dem PyTorch-Modelltraining und gehört zu dieser Fähigkeit; Reine Standort-, Planungs-, Max-Cut- usw. Aufgaben, die nicht an ein Modell gebunden sind und direkte optimale Entscheidungen suchen, verwenden die Kaiwu SDK-Fähigkeit. Wenn dieselbe Aufgabe sowohl kombinatorische Optimierung als auch Energietraining umfasst, können beide Fähigkeiten geladen und ihre jeweiligen Interpreter verwendet werden.

Minimaler geschlossener Kreislauf für Anwendungsaufgaben

  1. Überprüfen Sie die Aufgabenwirkung der gewählten Struktur mit repräsentativen Daten und notieren Sie den tatsächlichen Trainings- und Generierungsumfang sowie die Zeitaufwände, um die formelle Ausführung zu planen. Reservieren Sie im Gesamtbudget Zeit für Modellspeicherung, Laden in neuen Prozessen, Generierung und Berichtsabgleich.
  2. Stellen Sie so früh wie möglich den vollständigen, von der Aufgabe geforderten Einstiegspunkt her. Speichern Sie nach jeder Validierung das aktuell beste und wiederverwendbare Modell, die Konfiguration und den Bericht; nachfolgende Experimente verwenden neue Ausgabeverzeichnisse, das Abgabeverzeichnis behält immer eine lauffähige Version.
  3. Batch-Generierung wird nach tatsächlicher Zeilenanzahl akkumuliert: Beim Hinzufügen eines Batches werden die Zeilen dieses Batches addiert, und nach Erreichen der angeforderten Anzahl wird abgeschnitten. Überprüfen Sie zuerst mit kleinen Anfragen Anzahl, Breite und Werte; die Anzahl der Batches entspricht nicht der Anzahl der Stichproben.
  4. Unterscheiden Sie zwischen direktem Kopieren ursprünglicher Aufzeichnungen, natürlicher Überlappung durch Modell-Sampling und manueller Auswahl. Häufige Kombinationen können bei unabhängiger Generierung überlappen; das Filtern überlappender Datensätze oder die Erzwingung von Eindeutigkeit ändert die Verteilung; überprüfen Sie nach der Verwendung erneut geschäftliche Kennzahlen wie Proportionen und Assoziationen.
  5. Validieren Sie gemäß den öffentlich bekannten Geschäftsanforderungen des Tasks. Speichern Sie das Modell, generieren Sie in einem neuen Prozess nur mit dem gelieferten Modell und der Anfrageeingabe neu, und berichten Sie über Qualität und Zeitaufwand des gleichen Laufs. Wenn das aktuelle Ziel erreicht ist, schließen Sie die Abgabe ab; andernfalls bewahren Sie die aktuellen Ergebnisse auf und erläutern Sie diese wahrheitsgemäß, und versuchen Sie, mit dem verbleibenden Budget fortzufahren, vorausgesetzt, die oben genannten Überprüfungen können abgeschlossen werden.

Überprüfung, automatische Installation, Validierung

  1. Verwenden Sie den vom Benutzer angegebenen/im Projekt vorhandenen Interpreter erneut und überprüfen Sie die Versionen von Python, kaiwu-torch-plugin, kaiwu und torch. Führen Sie im gleichen Umgebung einmal python -m pip check aus, dann im Skill-Verzeichnis scripts/verify_kpp.py im Modus --imports-only. Wenn das Ergebnis dieser Überprüfung bereits vorliegt, verwenden Sie es direkt; gehen Sie dann zur Aufgabe über, ohne die Umgebung zusätzlich zu scannen oder ein allgemeines Training zu testen.
  2. Überprüfen Sie den Installationsplan und installieren Sie nur, wenn Pakete fehlen; bei Abhängigkeitskonflikten, Offline-Paketen, Python-Version oder Wheel-Unterstützung, folgen Sie der Installationsanleitung und wählen Sie basierend auf den tatsächlichen Metadaten eine kompatible Umgebung aus.
  3. Verwenden Sie den von der Aufgabe bereitgestellten kompatiblen Sampler erneut. Überprüfen Sie die entsprechende Lizenz nur bei Auswahl von SDK SA/CIM; ein fehlender SDK-Lizenzschlüssel bedeutet nicht, dass alle lokalen Sampler nicht trainieren können. Lizenzinitialisierung und nicht-interaktive Einschränkungen finden Sie in der Installationsanleitung.
  4. Validieren Sie das ausgewählte Modell mit dem tatsächlichen Aufgabenprogramm; nur wenn kein Aufgabenprogramm vorhanden ist und das SDK-Sampling-Training überprüft werden muss, führen Sie den Standardmodus des Validierungsskripts aus. KPP_IMPORT_OK beweist nur den Import; KPP_TRAIN_OK beweist nur das vom Skript abgedeckte kleine Training.

Prüfprotokolle, temporäre Dateien und Validierungskopien verbleiben im Aufgabenverzeichnis; Cloud-CIM wird nur verwendet, wenn die Aufgabe dies explizit erfordert und bereits ein Kontingent lizenziert ist. Beim Aufruf von Kaiwu CIM muss task_name mit kpp-skill beginnen, um die Backend-Statistiken zu erleichtern; z. B. kpp-skill-rbm-train. Wenn der vorhandene Task-Name dieses Präfix nicht enthält, stellen Sie ihm kpp-skill- voran.

Trainings- und Generierungsvertrag

Öffentliche Importpfade für BM und RBM:

from kaiwu.torch_plugin import BoltzmannMachine, RestrictedBoltzmannMachine

Bei Auswahl von SDK SA wird SimulatedAnnealingOptimizer aus kaiwu.classical importiert. Die BM-Konstruktion verwendet BoltzmannMachine(num_nodes, quadratic_coef=None, linear_bias=None, device=None); RBM verwendet RestrictedBoltzmannMachine(num_visible, num_hidden, quadratic_coef=None, linear_bias=None, device=None). Lernrate, Gewichtsabfall usw. werden dem PyTorch-Optimierer überlassen; learning_rate, k, batch_size oder andere Trainingsparameter der Bibliothek werden nicht an den Modellkonstruktor übergeben.

  • RBM: get_hidden(batch, bernoulli=True) und sample(sampler) geben den gemeinsamen Zustand sichtbar+verborgen zurück, die Breite ist num_visible + num_hidden. Die Anzahl der Zeilen im positiven Batch und im negativen Pool kann unterschiedlich sein; sie werden jeweils gemittelt; es wird nicht versucht, die gleiche Anzahl von Stichproben zu erzwingen. objective(positive, negative) gibt einen Skalar zurück. Schreiben Sie direkt positive = model.get_hidden(batch, bernoulli=True); packen Sie den Rückgabewert nicht aus und fügen Sie keine sichtbare Ebene an. get_hidden hat standardmäßig bernoulli=False, der verborgene Teil ist eine Wahrscheinlichkeit; dies ist für den positiven RBM-Phasen-Erwartungswert zulässig, erst bei der Auslieferung binärer gemeinsamer Stichproben ist bernoulli=True erforderlich. Behandeln Sie einen Wahrscheinlichkeitszustand nicht als bereits abgetastete binäre Stichprobe. Die Pool-Kapazität wird entsprechend der tatsächlichen Sampler-Konfiguration konfiguriert; SDK SA verwendet SimulatedAnnealingOptimizer(size_limit=...); erfinden Sie kein set_config oder fügen Sie sample keinen undefinierten num_solutions-Parameter hinzu.
  • SDK-Sampling: sampler.solve gibt ein ±1-2D-Array mit einem Referenz-Spin am Ende zurück. KPPs sample führt intern die Referenz-Spin-Normalisierung, das Löschen der Endspalte und die Konvertierung in einen 0/1-Float-Tensor durch. Entfernen Sie beim Rückgabewert von sample keine Spalten mehr und konvertieren Sie nicht. Wenn der Benutzer einen festen Testsatz bereitstellt, gibt solve jedes Mal den gesamten Satz unverändert zurück; weisen Sie die verschiedenen Lösungen nicht verschiedenen Bedingungen zu oder wiederholen Sie die erste Zeile, um die Stichprobenanzahl zu erreichen. Bedingtes Sampling muss sowohl die festgelegten Spalten als auch die konvertierten freien Spalten jeder Lösung überprüfen, nicht nur die Form.
  • Trainingsreihenfolge: Jeder Schritt optimizer.zero_grad() → positive/negative Phase → objective → backward() → step(); objective und backward() dürfen nicht in torch.no_grad() platziert werden. sample() gibt einen gradientenlosen Sampling-Tensor zurück, der Gradient stammt aus der Neuberechnung der Energie durch objective; ob sample() innerhalb von no_grad ist, beeinflusst das Training nicht. Modell, Daten und manuelle Tensoren bleiben auf dem gleichen Gerät. Überprüfen Sie die Breite der positiven/negativen Phase, die Binärität der negativen Phase, endliche Verluste/Gradienten und tatsächliche Parameteraktualisierungen.
  • BM / DBN: Bedingtes Sampling verwendet condition_sample(sampler, s_visible), das immer die ersten s_visible.shape[1] Knoten fixiert, und ruft für jede Bedingungszeile einmal den Löser auf. Wenn die bekannten Positionen in verschiedenen Zeilen unterschiedlich sind, ordnen Sie zeilenweise neu: Permutieren Sie linear_bias und den symmetrisierten quadratic_coef entsprechend "Bekannte zuerst", erstellen Sie mit den permutierten Parametern eine temporäre BoltzmannMachine, rufen Sie condition_sample auf, und permutieren Sie die Spalten zurück in die ursprüngliche Reihenfolge. Vor der Verwendung von DBN rufen Sie create_rbm_layer(input_dim) auf; nach Abschluss des Trainings rufen Sie mark_as_trained() auf, bevor Sie forward/transform verwenden.
  • QVAE: Kann Encoder/Decoder/BM/Sampler injizieren oder die vier _create_*-Fabriken in einer Unterklasse implementieren. config enthält num_latent_units / loss_type / dist_beta / kl_beta / weight_decay. Die Korrektur des Bernoulli-Mittelwerts ist optional; rufen Sie nach der Konstruktion set_dataset_mean und set_train_bias auf, gehen Sie nicht davon aus, dass das spätere Setzen des Mittelwerts den Bias automatisch aktualisiert. Der Mittelwert kann ein Skalar oder ein dimensionsweiser Tensor sein; folgen Sie der aktuellen Schnittstelle. Encoder+Decoder und BM verwenden zwei Optimierer, das BM-Update verwendet bm_loss(q.detach(), weight_decay); siehe Modellparadigmen. Die endgültige Bewertung behält die Eingabemittelwertkorrektur und den Ausgabebias des Trainings bei. q sind die Encoder-Logits, (q > 0).float() ist eine harte Entscheidung, kein Posterior-Mittelwert. Der Unterschied zwischen nativer Rekonstruktion und Mittelwert finden Sie im QVAE-Abschnitt der Referenzdokumentation. Stochastische Rekonstruktion oder Dekodierung des tatsächlichen Posterior-Mittelwerts sind beide akzeptabel; berechnen und berichten Sie Metriken aus den tatsächlichen finalen Logits, erläutern Sie die verwendete Methode und behandeln Sie die Qualität eines kleinen Trainings nicht als bestandene Schnittstellenbedingung.
  • QDiffusion: Der Proposal nimmt [B,L] entgegen und gibt [B,L,V] Logits aus. Wenn eine Kontextvervollständigung erforderlich ist, verwenden Sie Strukturen wie Self-Attention, damit fehlende Positionen Informationen von anderen Positionen lesen können; positionsweise Embedding + MLP kann nur Positionspräferenzen lernen. Selbst bei hoher Übereinstimmungsrate erfüllt es nicht die Anforderungen der Kontextvervollständigung. EnergyModel implementiert score_conditioned(noisy, candidate, attention_mask) und gibt [B,1] zurück. SequenceTokenSpec wird aus kaiwu.torch_plugin.qdiffusion importiert, nicht auf oberster Ebene exportiert. Wenn nur "Vokabulargröße V" angegeben ist, behalten Sie die Ausgabebreite V bei; spezielle IDs müssen in dieses Vokabular fallen und von den Inhalts-Tokens getrennt sein. Interpretieren Sie V nicht selbst als Inhaltsvokabular und erweitern Sie es nicht auf V+4. Wenn der Inhalts-ID-Bereich V vollständig ausfüllt oder die Zuordnung spezieller IDs unklar ist, listen Sie die zu klärenden Zuordnungen im Plan auf; verwenden Sie vor der Klärung weder eine erweiterte Ausgabebreite noch reduzieren Sie vorhandene Benutzerinhaltskategorien. Wenn ein Proposal von Grund auf trainiert wird, schließen Sie zuerst das unabhängige Vervollständigungstraining ab, frieren Sie es dann ein und trainieren Sie die Energie; die native objective schneidet interne Proposal-Gradienten ab und kann nicht zum Vortraining des Proposals verwendet werden. Verwenden Sie zum Training generator.objective({"targets": batch}), zur Generierung generator.generate(init, max_steps=...). Bei freeze_proposal=True wird nur die Energieseite optimiert. Vollständige Integrationsbedingungen finden Sie unter Modellparadigmen.
  • Merkmalsauswahl (MAIFS): from kaiwu.torch_plugin import FeatureSelectionWrapper, QuadraticLinearSolver. Konstruktorsignatur FeatureSelectionWrapper(model, feature_dim, lambda_reg=0.0, cardinality_k=None, min_selected_features=None, max_selected_features=None, solver="local_search", mask_update_epochs=None, input_feature_axis=-1, solver_kwargs=None). Training mit sel.fit_weights(loader, loss_fn, optimizer, train_epochs): loader liefert (x, y), loss_fn gibt einen Skalar zurück, optimizer wirkt auf sel.model.parameters(). Die Maske wird alle mask_update_epochs Epochen aktualisiert; bei None nur bei manuellem Aufruf von update_mask(loader, loss_fn, hessian_mode="full"|"diagonal", max_samples=1000) aktualisiert. Ergebnisse werden mit selected_indices(), num_selected(), get_support() gelesen. solver="local_search" benötigt keine Lizenz; "sa", "kaiwu_cim" nutzen das Kaiwu SDK und benötigen eine Lizenz. Der Zeitaufwand von update_mask liegt hauptsächlich im QUBO-Lösen und der Mengenprojektion und wächst schnell mit der Anzahl der Merkmale (lokal ~13-15 Sekunden für 400 Merkmale, Ableitungsberechnung unter 1 Sekunde); hessian_mode und max_samples beeinflussen nur den Ableitungsteil; reservieren Sie Zeit basierend auf der tatsächlichen Merkmalsanzahl. QuadraticLinearSolver().solve(Q, b) wandelt nur den QUBO-Term in eine Ising-Matrix mit einem Hilfsspin um und ist nicht für das Lösen zuständig.

Lieferung und Abnahme

Erstellen Sie für neue Aufgaben ein vollständiges Skript, das Daten, Importe, Konfiguration, Trainingsschleife und Ergebnisausgabe enthält; ändern Sie bei vorhandenem Code nur die für die Aufgabe erforderlichen Teile. Wenn nur ein Plan oder eine Umgebungsaufzeichnung angefordert wird, speichern Sie die angegebenen Dokumente tatsächlich; aktualisieren Sie die Lieferung nach mehreren Runden der Anforderungspräzisierung und überprüfen Sie, ob die Dateien geschrieben wurden. Die QVAE/QDiffusion-Abschnitte in den Referenzdokumenten sind strukturelle Skizzen mit Kontextvariablen und können nicht als direkt ausführbare Skripte verwendet werden. Wenn die API unsicher ist, lokalisieren Sie die aktuelle kaiwu.torch_plugin.__file__ und überprüfen Sie die tatsächliche Signatur und den Quellcode. Berichten Sie den tatsächlichen Interpreter, die Abhängigkeitsversionen und die Ausführungsergebnisse; das Bestehen des RBM-Tests garantiert nicht das Bestehen anderer Modelle, GPUs oder Cloud-CIM.

Verwandte Skills