ManfredAabye commited on
Commit
9739ce3
·
verified ·
1 Parent(s): 7c7d442

Delete main_CUDA.py

Browse files
Files changed (1) hide show
  1. main_CUDA.py +0 -158
main_CUDA.py DELETED
@@ -1,158 +0,0 @@
1
- import os
2
- import sys
3
- import sqlite3
4
- import torch
5
- from datasets import Dataset, DatasetDict
6
- from transformers import AutoTokenizer, AutoModelForSequenceClassification, Trainer, TrainingArguments
7
-
8
- SUPPORTED_FILE_TYPES = ['.sh', '.bat', '.ps1', '.cs', '.c', '.cpp', '.h', '.cmake', '.py', '.git', '.sql', '.csv', '.sqlite', '.lsl']
9
-
10
- def extrahiere_parameter(file_path):
11
- try:
12
- with open(file_path, 'r', encoding='utf-8') as file:
13
- lines = file.readlines()
14
- anzahl_zeilen = len(lines)
15
- anzahl_zeichen = sum(len(line) for line in lines)
16
- long_text_mode = anzahl_zeilen > 1000
17
- dimensionalität = 1 # Beispielwert, kann angepasst werden
18
- return {
19
- "text": file_path,
20
- "anzahl_zeilen": anzahl_zeilen,
21
- "anzahl_zeichen": anzahl_zeichen,
22
- "long_text_mode": long_text_mode,
23
- "dimensionalität": dimensionalität
24
- }
25
- except UnicodeDecodeError as e:
26
- print(f"Fehler beim Lesen der Datei {file_path}: {e}")
27
- return None
28
- except Exception as e:
29
- print(f"Allgemeiner Fehler beim Lesen der Datei {file_path}: {e}")
30
- return None
31
-
32
- def durchsuchen_und_extrahieren(root_dir, db_pfad):
33
- try:
34
- with sqlite3.connect(db_pfad) as conn:
35
- cursor = conn.cursor()
36
- cursor.execute('''CREATE TABLE IF NOT EXISTS dateiparameter
37
- (id INTEGER PRIMARY KEY,
38
- dateipfad TEXT,
39
- anzahl_zeilen INTEGER,
40
- anzahl_zeichen INTEGER,
41
- long_text_mode BOOLEAN,
42
- dimensionalität INTEGER)''')
43
-
44
- for subdir, _, files in os.walk(root_dir):
45
- for file in files:
46
- if any(file.endswith(ext) for ext in SUPPORTED_FILE_TYPES):
47
- file_path = os.path.join(subdir, file)
48
- parameter = extrahiere_parameter(file_path)
49
- if parameter:
50
- cursor.execute('''INSERT INTO dateiparameter (dateipfad, anzahl_zeilen, anzahl_zeichen, long_text_mode, dimensionalität)
51
- VALUES (?, ?, ?, ?, ?)''', (file_path, parameter["anzahl_zeilen"], parameter["anzahl_zeichen"], parameter["long_text_mode"], parameter["dimensionalität"]))
52
- conn.commit()
53
- print("Parameter erfolgreich extrahiert und in der Datenbank gespeichert.")
54
- except sqlite3.Error as e:
55
- print(f"SQLite Fehler: {e}")
56
- except Exception as e:
57
- print(f"Allgemeiner Fehler: {e}")
58
-
59
- def extrahiere_parameter_aus_db(db_pfad):
60
- try:
61
- with sqlite3.connect(db_pfad) as conn:
62
- cursor = conn.cursor()
63
- cursor.execute("SELECT * FROM dateiparameter")
64
- daten = cursor.fetchall()
65
- return daten
66
- except sqlite3.Error as e:
67
- print(f"SQLite Fehler: {e}")
68
- return None
69
- except Exception as e:
70
- print(f"Allgemeiner Fehler: {e}")
71
- return None
72
-
73
- def konvertiere_zu_hf_dataset(daten):
74
- dataset_dict = {
75
- "text": [],
76
- "anzahl_zeilen": [],
77
- "anzahl_zeichen": [],
78
- "long_text_mode": [],
79
- "dimensionalität": []
80
- }
81
-
82
- for eintrag in daten:
83
- dataset_dict["text"].append(eintrag[1]) # 'text' entspricht 'dateipfad'
84
- dataset_dict["anzahl_zeilen"].append(eintrag[2])
85
- dataset_dict["anzahl_zeichen"].append(eintrag[3])
86
- dataset_dict["long_text_mode"].append(eintrag[4])
87
- dataset_dict["dimensionalität"].append(eintrag[5])
88
-
89
- return Dataset.from_dict(dataset_dict)
90
-
91
- def trainiere_und_speichere_modell(hf_dataset, output_model_dir):
92
- try:
93
- tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased", use_fast=True)
94
-
95
- def tokenize_function(examples):
96
- return tokenizer(examples["text"], padding="max_length", truncation=True)
97
-
98
- tokenized_datasets = hf_dataset.map(tokenize_function, batched=True)
99
-
100
- # Beispielhaftes Hinzufügen von Dummy-Labels für das Training
101
- tokenized_datasets = tokenized_datasets.map(lambda examples: {"label": [0] * len(examples["text"])}, batched=True) # Dummy labels as int
102
-
103
- # Aufteilen des Datensatzes in Training und Test
104
- train_test_split = tokenized_datasets.train_test_split(test_size=0.2)
105
- train_dataset = train_test_split["train"]
106
- eval_dataset = train_test_split["test"]
107
-
108
- num_labels = len(set(train_dataset["label"]))
109
-
110
- model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased", num_labels=num_labels)
111
-
112
- training_args = TrainingArguments(
113
- output_dir=output_model_dir,
114
- evaluation_strategy="epoch", # Aktualisiert nach der Deprecation-Warnung
115
- per_device_train_batch_size=8,
116
- per_device_eval_batch_size=8,
117
- num_train_epochs=3,
118
- weight_decay=0.01,
119
- )
120
-
121
- trainer = Trainer(
122
- model=model,
123
- args=training_args,
124
- train_dataset=train_dataset,
125
- eval_dataset=eval_dataset,
126
- )
127
-
128
- trainer.train()
129
- model.save_pretrained(output_model_dir)
130
- tokenizer.save_pretrained(output_model_dir)
131
-
132
- print(f"Das Modell wurde erfolgreich in {output_model_dir} gespeichert.")
133
- print("You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.")
134
-
135
- except Exception as e:
136
- print(f"Fehler beim Trainieren und Speichern des Modells: {e}")
137
-
138
- if __name__ == "__main__":
139
- # Verzeichnispfad als Argument übergeben, falls vorhanden
140
- if len(sys.argv) > 1:
141
- directory_path = sys.argv[1]
142
- else:
143
- directory_path = '.' # Standardverzeichnis, falls kein Argument übergeben wurde
144
-
145
- db_name = os.path.basename(os.path.normpath(directory_path)) + '.db'
146
-
147
- durchsuchen_und_extrahieren(directory_path, db_name)
148
-
149
- daten = extrahiere_parameter_aus_db(db_name)
150
- if daten:
151
- hf_dataset = konvertiere_zu_hf_dataset(daten)
152
-
153
- output_model = os.path.basename(os.path.normpath(directory_path)) + '_model' # Verzeichnisname Modell
154
- output_model_dir = os.path.join(os.path.dirname(db_name), output_model)
155
-
156
- trainiere_und_speichere_modell(hf_dataset, output_model_dir)
157
- else:
158
- print("Keine Daten gefunden, um ein HF-Dataset zu erstellen.")