or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
Artificial Intelligence (AI) on High Performance Computing (HPC)
Πρόγραμμα
Zoom link:
https://authgr.zoom.us/j/99555423507
HackMD
Κατά τη διάρκεια των παρουσιάσεων μπορείτε να χρησιμοποιείτε το παρόν κείμενο για να κάνετε ερωτήσεις (το chat του zoom προτείνουμε να χρησιμοποιείται μόνο για θέματα που σχετίζονται με το zoom).
Βασικές επιλογές
Για να χρησιμοποιήσετε το HackMD document δεν απαιτείται να κάνετε signup ή login.
To HackMD είναι real-time editor και viewer.
Οι βασικές επιλογές του editor είναι αυτές που εμφανίζονται στην παρακάτω εικόνα.
Code of Conduct
Γενικά, ό,τι λέει εδώ.
Ειδικά, για την hands-on εκπαίδευση (μέρος Β') σας παροτρύνουμε:
Checklist για το hands-on
Για το μέρος Β' (hands-on) θα χρειαστείτε (όσοι επιθυμείτε να ακολουθήσετε τις ασκήσεις του εκπαιδευτή) λογαριασμό στη συστοιχία.
Αν έχετε ιδρυματικό λογαριασμό ΑΠΘ αλλά δεν έχετε πρόσβαση στη συστοιχία HPC "Αριστοτέλης" μπορείτε να συμπληρώσετε την αίτηση για πρόσβαση στη συστοιχία.
Αν δεν έχετε λογαριασμό ΑΠΘ μπορείτε να συνδεθείτε με τα παρακάτω προσωρινά credentials:
Αφότου συνδεθείτε επιτυχώς με ssh φτιάξτε ένα φάκελο (με όνομα που θα επιλέξετε εσείς, π.χ.
jim
) και μεταβείτε μέσα σε αυτόν για να τοποθετήσετε τα δεδομένα σας.Για σύνδεση με SSH ακολουθείστε τις οδηγίες εδώ.
Καθώς η σύνδεση με SSH είναι διαθέσιμη μέσα από το δίκτυο του ΑΠΘ, εφόσον παρακολουθείτε μέσω zoom και δεν έχετε τη δυνατότητα σύνδεσης στο VPN του Πανεπιστημίου, μπορείτε να συνδεθείτε σε terminal μέσω της σελίδας https://hpc.auth.gr (επιλογή Clusters -> Aristotle Shell Access).
Α' μέρος
Παρουσιάσεις (διαφάνειες)
Example scripts
Αφού συνδεθείτε στον Αριστοτέλη μπορείτε να αντιγράψετε τα παραδείγματα (scripts και Jupyter notebook) αυτής της παρουσίασης με την παρακάτω εντολή:
Παράδειγμα ενός "batch" file
Για το παράδειγμα χρησιμοποιήσαμε το παρακάτω αρχείο υποβολής εργασίας. Οι γραμμές με πρόθεμα
#SBATCH
αποτελούν "οδηγίες" για το slurm (πόσοι υπολογιστικοί πόροι θα χρειαστούν και για πόση ώρα)Η εντολή
sinfo
Για να δούμε την κατάσταση μίας ουράς (π.χ. της
rome
) εκτελούμε την παρακάτω εντολή. Στα σχόλια γίνεται μιά επεξήγηση του τι βλέπουμε στην έξοδο αυτής της εντολής.Η εντολή
sbatch
Χρησιμοποιείται για να υποβάλλουμε προς εκτέλεση κάποια εργασία:
Η εντολή
squeue
Χρησιμοποιείται για να δούμε την κατάσταση των εργασιών. Π.χ. για να δούμε τις εργασίες του χρήστη μας (
testnoc5
) η εντολή είναι η παρακάτω. Στα σχόλια γίνεται επεξήγηση του τι βλέπουμε ανά γραμμή.Ερωτήσεις/Απαντήσεις
Πως διαλέγουμε σε ποιο partition θα στείλουμε το job μας; Όχι τεχνικά, αλλά για ποιο λόγο να διαλέξουμε πχ rome αντί ampere κλπ.
Το καθορίζουμε στο job file με την παράμετρο –partition, π.χ.:
Η επιλογή του partition έχει να κάνει με το τι resources θα χρειαστεί να χρησιμοποιήσουμε. Π.χ. αν χρειαζόμαστε για το εκάστοτε job μας πρόσβαση σε GPU πόρους θε επιλέξουμε είτε το
gpu
είτε τοampere
partition. Τα διαθέσιμα partitions, οι πόροι που διαθέτει το καθένα και τα όρια χρήσης δίνονται στον εξής σύνδεσμο:Τα δεδομένα μας πως τα περνάμε στη συστοιχία; Έχω πχ 10GB δεδομένων που θέλω να αναλύσω. Που τα ανεβάζω;
rsync
ήscp
. Συνήθως χρησιμοποιείται το πρώτο για πολλά αρχεία και φακέλους και το δεύτερο για λίγα αρχεία. Κάποιες σύντομες οδηγίες υπάρχουν εδώ. Εφόσον όμως τα δεδομένα υπάρχουν σε κάποιο cloud storage (π.χ. dropbox ή google drive) μπορεί να χρησιμοποιηθεί τοrclone
utility (https://hpc.it.auth.gr/transfer-cloud/).Πώς μπορούμε να εγκαταστήσουμε μία βιβλιοθήκη της python στο δικό μας χώρο στη συστοιχία (στο home directory μας);
Μπορούμε να εγκαταστήσουμε πακέτα στο χώρο μας στη συστοιχία χρησιμοποιώντας environments, είτε python virtual environments + pip, είτε anaconda virtual environments.
Η συστοιχία διαθέτει κεντρικά εγκατεστημένη τη διανομή miniconda3 του anaconda. Για να τη χρησιμοποιήσουμε μπορούμε να τη «φορτώσουμε» στο περιβάλλον μας με την εντολή
Υπάρχει η δυνατότητα να πάρουμε μια εκτίμηση για το πότε θα εκτελεστεί το job μας;
Ναι, μπορούμε να έχουμε μιά εκτίμηση χρησιμοποιώντας την παράμετρο
--test-only
στην sbatch, ως εξής:Σημειώστε ότι με την παράμετρο
--test-only
το job μας δεν θα υποβληθεί. Απλά μας δίνει μιά ένδειξη καταρχήν ότι δεν έχουμε κάποιο typo στο job file και επίσης και μια εκτίμηση του εκτιμόμενου χρονου εκκίνησης. Για να μπει στην ουρά το job θα πρέπει να ξανατρέξουμε την εντολή χωρίς την παράμετρο--test-only
.Πώς μπορούμε να εκτιμήσουμε σωστά πόσα resources χρειάζεται για το job μας ώστε να τα καθορίσουμε σωστά στο job file μας;
Για να γίνει καλή εκτίμηση δυστυχώς χρειάζεται να έχει χρησιμοποιηθεί το cluster ώστε να έχουμε εικόνα των χρόνων επίλυσης και πώς αυτοί μειώνονται ή αυξάνονται όταν προσθέτουμε ή μειώνουμε πόρους. Η πρότασή μας είναι να ξεκινάμε τη διαστασιολόγηση αυτή (benchmarking) με μικρά jobs στην αρχή τα οποία προοδευτικά μπορούμε να αυξάνουμε σε μέγεθος. Στην πορεία πολύ χρήσιμη θα μας φανεί η χρήση της εντολής
seff
που μας δίνει για ένα ολοκληρωμένο job το CPU και memory efficiency που επιτεύχθηκε. Π.χ. για το παράδειγμα της xgboost:Βλέπουμε στο παραπάνω ότι έχουμε σχετικά καλό CPU efficiency (
74.88%
), οπότε ίσως είναι ΟΚ να μεγαλώσουμε το job size (π.χ. να το υποβάλλουμε να τρέξει σε 16 Cpu Cores) και να δούμε αν βελτιώνεται ή έστω παραμένει στα ίδια επίπεδα το CPU efficiency. Αν χειροτερεύει (π.χ. έχει τιμή κάτω από 60%) προτείνουμε να μην κλιμακώσουμε περαιτέρω το job size.Ποιοι είναι οι συνήθεις χρόνοι αναμονής για μικρές/μεσαίες/μεγάλες εργασίες;
Αν δηλώσω ένα εκτιμώμενο χρόνο για το job και ο χρόνος αυτός παρέλθει, τι συμβαίνει με το job μου; Θα διακοπεί;
Υπάρχει άνω όριο στην τιμή του walltime που μπορώ να δηλώσω;
https://hpc.it.auth.gr/nodes-summary/#partition-limits
Για παράδειγμα στο
batch
partition οι εργασίες μπορούν να τρέξουν έως και 7 ημέρες ενώ στοrome
partition το μέγιστο walltime είναι 2 ημέρες.batch
,rome
καιampere
εφόσον υποβάλουμε τις εργασίες μας κάτω από συγκεκριμέναQOS accounts
χρησιμοποιώντας όμως λιγότερα resources από αυτά που μπορούν να χρησιμοποιηθούν by default. Για παράδειγμα, στοbatch partition
μπορούμε να τρέξουμε μία εργασία με διάρκεια έως και 7 ημέρες με έως140 CPU cores
, αλλά εάν θέλουμε να χρησιμοποιήσουμε την επέκταση του χρονικού ορίου (batch-extd
), μπορούμε να τρέξουμε μία εργασία με διάρκεια έως και 12 ημέρες με έως40 CPU cores
. Για να υποβάλουμε την εργασία μας κάτω από έναQOS account
μπορούμε να χρησιμοποιήσουμε το directive--qos
στο script υποβολής:Πόσο καιρό σας πήραν τα jobs για την ολοκλήρωση των πειραμάτων (DL σε GPU). Εκτίμηση μαζί με Queue time + πειράματα. Επίσης συγκεκριμένα τι Queue times συναντήσατε? Π.χ. στην συγκεκριμένη δουλεία, που το μοντέλο χρειαζόταν 33 ώρες εκπαίδευσης, για την εκπαίδευση στο cluster πόση ώρα πήρε?
Β' μέρος
Παρουσιάσεις (διαφάνειες)
Ερωτήσεις/Απαντήσεις
Όταν ξεκινας τη διαδικασία του hyperparameter tuning, πάρχουν καποια standard best practices ώστε να περιορίσεις κάπως το εύρος των τιμών που πρέπει να εξετάσεις στο κάθε hyperparameter ή έστω να βρεις κάποιο starting point στην περιοχή του οποίου να εξετάσεις πιο διεξοδικά?
Η παρουσίαση υπάρχει στο github repository? Δεν τη βρίσκω!
Αν θέλετε πάντως ανεβάστε την παρουσίαση στο GitHub, ήταν πολύ ενδιαφέρουσα
Error (κατέβασα όλα τα αρχεία από το Instructions.txt): more slurm-1708277.out
__hpmlt_.py
να αλλάξει η μεταβλητήROOT_DIR
στο πλήρες path όπου είναι τα αρχεία που αντιγράφτηκαν. Το path μπορείς να το δεις με την εντολήpwd
. Π.χ. σε αυτήν την περίπτωση θα πρέπει να είναι:ΔΙΟΡΘΩΘΗΚΕ! Ευχαριστω!
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →Σε τι διαφέρει το SLURM από το TORQUE; Και τα δυο είναι job submission se HPC.
Σε περίπτωση που οι εργασίες που υποβάλονται στα πλαίσια του hands-on παραμένουν στην ουρά;
Για όσες εργασίες παραμένουν στην ουρά θα μπορούσατε να προσθέσετε το παρακάτω slurm directive στο script υποβολής:
ώστε να δρομολογηθούν στους πόρους που έχουν δεσμευθεί για το event.
Εάν θέλετε να ακυρώσετε προηγούμενες εργασίες που δεν έχουν δρομολογηθεί, μπορείτε να χρησιμοποιήσετε την εντολή
scancel
: