Skip to content

Commit 6107a71

Browse files
committed
plan
1 parent 6c32848 commit 6107a71

File tree

3 files changed

+116
-1
lines changed

3 files changed

+116
-1
lines changed
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
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": "Can you write a function returning the prime number in python?",
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.

_doc/articles/2025/2025-03-01-route2025.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@ Séance 1 (31/1)
2222
* `ChatGPT <https://chat.openai.com/>`_,
2323
`LLM <https://en.wikipedia.org/wiki/Large_language_model>`_,
2424
(Large Language Model), SLLM (Small LLM)
25-
* Coder avec un LLM en local.
25+
* Coder avec un LLM en local : :ref:`l-2025-01-31-local-llm`
2626
* Notebooks, Visual Studio Code

_doc/articles/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ Ou *blog*.
1010
:maxdepth: 1
1111

1212
2025/2025-03-01-route2025
13+
2025/2025-01-31-local_llm
1314

1415
.. toctree::
1516
:caption: 2024

0 commit comments

Comments
 (0)