Skip to content

Commit 64fc589

Browse files
authored
Update plan (#79)
* update * plan * update * plan * fix example * clean * fix issues * fix notebook * changes * fix ci * chats * norm * issue * doc * add test * add notebook * complete one notebook * embedding * fix plan * req * foc * fix * skip
1 parent 39bc14e commit 64fc589

37 files changed

+19064
-161
lines changed

.github/workflows/documentation.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,6 @@ jobs:
9090
exit 1
9191
fi
9292
93-
- uses: actions/upload-artifact@v3
93+
- uses: actions/upload-artifact@v4
9494
with:
9595
path: ./dist/html/**

.github/workflows/wheels-any.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ jobs:
2424
- name: build wheel
2525
run: python -m pip wheel .
2626

27-
- uses: actions/upload-artifact@v3
27+
- uses: actions/upload-artifact@v4
2828
with:
2929
path: ./teachpyx*.whl

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ _doc/LICENSE.txt
4343
_doc/auto_examples/*
4444
_doc/articles/2024/pyramide.png
4545
_doc/articles/2024/tsp_simple.png
46+
_doc/articles/2024/anim_evolution.png
47+
_doc/articles/2024/vie_1.png
4648
_doc/examples/**/plot_*.png
4749
_doc/examples/**/plot_*.xlsx
4850
_doc/examples/prog/*.proto

_doc/api/practice/index.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ teachpyx.practice
88
:maxdepth: 1
99
:caption: modules
1010

11-
11+
ml_skl
1212
rues_paris
1313
tsp_bresenham
1414
tsp_kohonen
15-
tsp_kruskal
15+
tsp_kruskal
1616

1717

1818
.. automodule:: teachpyx.practice

_doc/api/practice/ml_skl.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
teachpyx.practice.ml_skl
3+
========================
4+
5+
.. automodule:: teachpyx.practice.ml_skl
6+
:members:
7+
:no-undoc-members:
-24.5 KB
Binary file not shown.

_doc/articles/2024/pyramide.png

-45 KB
Binary file not shown.

_doc/articles/2024/tsp_simple.png

-31.2 KB
Binary file not shown.

_doc/articles/2024/vie_1.png

-7.83 KB
Binary file not shown.
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
.. _l-2025-01-31-local-llm:
2+
3+
======================
4+
2025-01-31 : local LLM
5+
======================
6+
7+
Il est parfois impossible d'utiliser un outils tels que ChatGPT
8+
parce qu'on ne veut pas que certains données ou questions s'évadent.
9+
J'ai donc suivi le tutoriel décrit sur le site de HuggingFace :
10+
`microsoft/Phi-3.5-mini-instruct <https://huggingface.co/microsoft/Phi-3.5-mini-instruct>`_.
11+
Une fois le modèle téléchargé, j'ai exécuté le script avec une question
12+
différente.
13+
14+
.. code-block:: python
15+
16+
import torch
17+
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
18+
19+
torch.random.manual_seed(0)
20+
21+
model = AutoModelForCausalLM.from_pretrained(
22+
"microsoft/Phi-3.5-mini-instruct",
23+
device_map="cuda",
24+
torch_dtype="auto",
25+
trust_remote_code=True,
26+
)
27+
tokenizer = AutoTokenizer.from_pretrained("microsoft/Phi-3.5-mini-instruct")
28+
29+
messages = [
30+
{"role": "system", "content": "You are a helpful AI assistant."},
31+
{
32+
"role": "user",
33+
"content": "Peux-tu écrire un code python implémentant un transformer personnalisé pour scikit-learn ?",
34+
},
35+
# {"role": "assistant", "content": "Sure! <type the answer of the model>"},
36+
# {"role": "user", "content": "<continue with yours>"},
37+
]
38+
39+
pipe = pipeline(
40+
"text-generation",
41+
model=model,
42+
tokenizer=tokenizer,
43+
)
44+
45+
generation_args = {
46+
"max_new_tokens": 500,
47+
"return_full_text": False,
48+
"temperature": 0.0,
49+
"do_sample": False,
50+
}
51+
52+
output = pipe(messages, **generation_args)
53+
print(output[0]["generated_text"])
54+
55+
Et le modèle répond :
56+
57+
.. code-block:: text
58+
59+
Certainement! Pour créer un transformateur personnalisé pour scikit-learn,
60+
vous devez implémenter les classes `BaseEstimator` et `TransformerMixin`.
61+
Voici un exemple simple de transformateur personnalisé qui normalise les données :
62+
63+
```python
64+
from sklearn.base import BaseEstimator, TransformerMixin
65+
66+
class NormalizationTransformer(BaseEstimator, TransformerMixin):
67+
def __init__(self):
68+
# Initialiser avec des valeurs par défaut si nécessaire
69+
pass
70+
71+
def fit(self, X, y=None):
72+
# Calculer les statistiques de la distribution des données
73+
self.means_ = X.mean(axis=0)
74+
self.stds_ = X.std(axis=0)
75+
return self
76+
77+
def transform(self, X):
78+
# Appliquer la normalisation aux données
79+
return (X - self.means_) / self.stds_
80+
81+
def fit_transform(self, X, y=None, **fit_params):
82+
# Appeler fit puis transform
83+
return self.fit(X, y, **fit_params).transform(X)
84+
85+
# Exemple d'utilisation
86+
from sklearn.pipeline import Pipeline
87+
from sklearn.linear_model import LinearRegression
88+
89+
# Créer un pipeline avec le transformateur personnalisé et un modèle
90+
pipeline = Pipeline(steps=[
91+
('normalize', NormalizationTransformer()),
92+
('regressor', LinearRegression())
93+
])
94+
95+
# Supposons que vous avez un ensemble de données X et des étiquettes y
96+
# pipeline.fit(X, y)
97+
# prédictions = pipeline.predict(X_test)
98+
```
99+
100+
Dans cet exemple, `NormalizationTransformer` calcule la moyenne et
101+
l'écart type de chaque colonne lors du processus de `fit` et applique
102+
ensuite la normalisation lors du processus de `transform`.
103+
La méthode `fit_transform` combine les deux pour une efficacité.
104+
105+
Vous pouvez personnaliser ce transformateur pour répondre à vos besoins spécifiques.
106+
107+
Pas si mal pour un petit modèle.
108+
D'autres modèles sont accessibles comme celui-ci
109+
`DeepSeek-R1 <https://huggingface.co/deepseek-ai/DeepSeek-R1>`_
110+
mais qui nécessite une machine un peu plus costaude qu'un simple
111+
ordinateur portable pour tourner.
112+
D'autres modèles sont capables de prendre des images en entrée :
113+
`microsoft/Phi-3.5-vision-instruct <https://huggingface.co/microsoft/Phi-3.5-vision-instruct>`_
114+
tout en gardant une taille raisonnable.
115+
116+
Quelques idées de questions qui font gagner du temps :
117+
118+
* Peux-tu expliquer ce que fait cette fonction ?
119+
* Peux-tu générer la documentation pour cette fonction ?
120+
* Peux-tu générer des tests unitaires pour cette fonctions ?

0 commit comments

Comments
 (0)