|
|
|
<img src="uploads/b78708ab8609c803fced7b5c6c86096f/00-fidle-header-03.svg">
|
|
|
|

|
|
|
|
|
|
|
|
L'idée est de proposer un **découpage en séquences** relativement courtes, de 2h à 3h maximum :
|
|
|
|
|
|
|
|
L'idée est de proposer un **découpage en séquences** relativement courtes, de 1h à 3h maximum :
|
|
|
|
* Le contenu des séquences pourra être adapté en fonction des demandes ou du contexte.
|
|
|
|
* Toutes les séquences seront **enregistrées** et **disponibles sur youtube**. Il sera donc possible de rattraper une séquence.
|
|
|
|
* Le programe de formation de **Fidle se subdivise en trois parties** cette année : <br>
|
|
|
|
* Toutes les séquences seront proposées en **Live**, **enregistrées** et **disponibles sur YouTube**. Il est donc possible de rattraper une séquence.
|
|
|
|
* Le programme de formation de **Fidle se subdivise en trois parties** cette année :
|
|
|
|
|
|
|
|
### [`I. Bases,Concepts et enjeux:`](#toc1)
|
|
|
|
* Accessible à tout public **sans aucun prérequis**, vous emmène à la decouverte des **fondementaux de l'IA**.
|
|
|
|
|
|
|
|
* Accessible à tout public **sans aucun prérequis**, vous emmène à la découverte des **fondamentaux de l'IA**.
|
|
|
|
|
|
|
|
### [`II. L'IA comme un outil:`](#toc2)
|
|
|
|
* Accessible à tout public avec **une maîtrise raisonnable de python**, à destination de celles et ceux qui souhaitent **résoudre un problème avec de l'IA.** <br>
|
|
|
|
|
|
|
|
* Accessible à tout public avec **une maîtrise raisonnable de python**, à destination de celles et ceux qui souhaitent **résoudre un problème avec de l'IA.**
|
|
|
|
|
|
|
|
### [`III. Acteur de l’IA:`](#toc3)
|
|
|
|
* Accessible pour celles et ceux qui ont suivi la seconde partie, pour aborder les **dernières avancées de l'IA**.
|
|
|
|
|
|
|
|
* Accessible pour celles et ceux qui ont suivi la seconde partie, pour aborder les **dernières avancées de l'IA**.
|
|
|
|
|
|
|
|
<a name='toc'></a>
|
|
|
|
<img width="100px" src=uploads/772f1ffca66012d9037462fbfa5096fa/saison-2024.png></img>
|
|
|
|
\
|
|
|
|
{width="100px"}
|
|
|
|
|
|
|
|
- `Légende :` <br>
|
|
|
|
: Un peu de complexité, thématique incontournable
|
|
|
|
:
|
|
|
|
Contenus avancé, pour aller plus loin.
|
|
|
|
- `Légende :` \
|
|
|
|
: Un peu de complexité, thématique incontournable\
|
|
|
|
: Contenus avancé, pour aller plus loin.
|
|
|
|
|
|
|
|
## Un programme 2023/20224 en 20 Séquences et 3 parties.
|
|
|
|
|
|
|
|
Ce programme est en cours de finition 😀 :
|
|
|
|
Ce programme est en cours de finition :grinning: :
|
|
|
|
|
|
|
|
**`Sommaire`** :
|
|
|
|
|
|
|
|
### [`I. Bases, Concepts et enjeux`](#toc1)
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
* **`Séquence 1`** : [Contexte et historique, de la régression linéaire aux réseaux de neurones](#seq1)
|
|
|
|
* **`Séquence 2`** : [Des données et des modèles, L’enfer des données et autres problèmes d’explicabilité](#seq2)
|
|
|
|
* **`Séquence 3`** : [Démo / illustration (LLM + génération d’image)](#seq3)
|
|
|
|
* **`Séquence 4`** : [AI, droit, société et éthique](#seq4)
|
|
|
|
|
|
|
|
### [`II. Résoudre mon problème avec de l’IA 🛰️`](#toc2)
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
* **`Séquence 5`** : [Mathématiques, gradients everywhere !!!](#seq5)
|
|
|
|
* **`Séquence 6`** : [Méthodologie des modèles/apprentissage + fine-tuning + TP](#seq6)
|
|
|
|
* **`Séquence 7`** : [Réseaux convolutifs CNN](#seq7)
|
|
|
|
* **`Séquence 8`** : [RNN & Transformers ](#seq8)
|
|
|
|
* **`Séquence 9`** : [Autoencodeur (AE), un exemple d'apprentissage self supervised ](#seq9)
|
|
|
|
* **`Séquence 10`** : [Variational Autoencoder (VAE), jouer avec les espaces latents  ](#seq10)
|
|
|
|
* **`Séquence 11`** : [Generative Adversarial Networks (GAN) ](#seq11)
|
|
|
|
* **`Séquence 12`** : [Travailler avec des données structurées : Graph Neural Network (GNN) ](#seq12)
|
|
|
|
* **`Séquence 13`** : [Diffusion model, text to image ](#seq13)
|
|
|
|
* **`Séquence 14`** : [Tactiques et stratégies du Deep Reinforcement Learning.  ](#seq14)
|
|
|
|
* **`Séquence 15`** : [Des neurones pour la physique, les physics-informed neural networks (PINNS) ](#seq15)
|
|
|
|
* **`Séquence 8`** : [RNN & Transformers](#seq8)
|
|
|
|
* **`Séquence 9`** : [Autoencodeur (AE), un exemple d'apprentissage self supervised](#seq9)
|
|
|
|
* **`Séquence 10`** : [Variational Autoencoder (VAE), jouer avec les espaces latents](#seq10)
|
|
|
|
* **`Séquence 11`** : [Generative Adversarial Networks (GAN)](#seq11)
|
|
|
|
* **`Séquence 12`** : [Travailler avec des données structurées : Graph Neural Network (GNN)](#seq12)
|
|
|
|
* **`Séquence 13`** : [Diffusion model, text to image](#seq13)
|
|
|
|
* **`Séquence 14`** : [Tactiques et stratégies du Deep Reinforcement Learning.](#seq14)
|
|
|
|
* **`Séquence 15`** : [Des neurones pour la physique, les physics-informed neural networks (PINNS)](#seq15)
|
|
|
|
|
|
|
|
### [`III. Acteur de l’IA, Optimisation, conception, etc. 🛠️`](#toc3)
|
|
|
|
|
|
|
|
---
|
|
|
|
* **`Séquence 16`** :[ Fusion de modèle / multi-modalité ](#seq16)
|
|
|
|
* **`Séquence 17`** :[ Apprendre plus vite et moins cher, optimiser l’apprentissage et réduire notre empreinte carbone ](#seq17)
|
|
|
|
* **`Séquence 18`** : [Passer à la vitesse supérieure : l’accélération matérielle ](#seq18)
|
|
|
|
* **`Séquence 19`** :[ Nouveaux Frameworks d’apprentissage / Nouvelles Technos  ](#seq19)
|
|
|
|
|
|
|
|
* **`Séquence 16`** :[ Fusion de modèle / multi-modalité](#seq16)
|
|
|
|
* **`Séquence 17`** :[ Apprendre plus vite et moins cher, optimiser l’apprentissage et réduire notre empreinte carbone](#seq17)
|
|
|
|
* **`Séquence 18`** : [Passer à la vitesse supérieure : l’accélération matérielle](#seq18)
|
|
|
|
* **`Séquence 19`** :[ Nouveaux Frameworks d’apprentissage / Nouvelles Technos](#seq19)
|
|
|
|
* **`Séquence 20`** : [Cas pratiques / retour d’expérience](#seq20)
|
|
|
|
* **`JDLS2024`** : [Perspective /Futur (JDLS) 👩🔬 ](#jdls)
|
|
|
|
* **`JDLS2024`** : [Perspective /Futur (JDLS) :woman::microscope:](#jdls)
|
|
|
|
|
|
|
|
# **`I. Bases, Concepts et enjeux`** <a name='toc1'></a>
|
|
|
|
# **`I. Bases, Concepts et enjeux`**
|
|
|
|
|
|
|
|
L'apprentissage profond via des réseaux de neurones (Deep Learning) à totalement révolutionné l'Intelligence artificielle ces dernières années et ces incroyables avancées (ChatGPT, Stable Diffusion, DeepL, etc.) soulèvent de nombreuses questions liées à l'éthique, la sécurité, la vie privée et l'impact sur l'emploi.
|
|
|
|
|
| ... | ... | @@ -64,7 +75,7 @@ L'objectif de cette première partie, **accessible à toutes et à tous**, **san |
|
|
|
|
|
|
|
Cette première partie est composées de 4 séquences, de novembre à décembre 2023:
|
|
|
|
|
|
|
|
* **`Séquence 1 : Contexte et historique, de la régression linéaire aux réseaux de neurones`** <a name='seq1'></a>
|
|
|
|
* **`Séquence 1 : Contexte et historique, de la régression linéaire aux réseaux de neurones`**
|
|
|
|
|
|
|
|
> **Durée : 2h / Jeudi 16 novembre 2023, 14h**
|
|
|
|
* Intelligence artificielle, machine learning et deep learnings ?
|
| ... | ... | @@ -78,7 +89,7 @@ Cette première partie est composées de 4 séquences, de novembre à décembre |
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
* **`Séquence 2 : Des données et des modèles, L’enfer des données et autres problèmes d’explicabilité`** <a name='seq2'>
|
|
|
|
* **`Séquence 2 : Des données et des modèles, L’enfer des données et autres problèmes d’explicabilité`**
|
|
|
|
|
|
|
|
> **Durée : 2h / Jeudi 23 novembre 2023, 14h**
|
|
|
|
* Les données, pourquoi sont-elles importantes ?
|
| ... | ... | @@ -89,7 +100,7 @@ Cette première partie est composées de 4 séquences, de novembre à décembre |
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
* **`Séquence 3 : Démo / illustration (LLM + génération d’image)`** <a name='seq3'>
|
|
|
|
* **`Séquence 3 : Démo / illustration (LLM + génération d’image)`**
|
|
|
|
|
|
|
|
> **Durée : 2h / Jeudi 30 novembre 2023, 14h**
|
|
|
|
* Une démonstration complète pour tout voir et tout comprendre !
|
| ... | ... | @@ -98,10 +109,9 @@ Cette première partie est composées de 4 séquences, de novembre à décembre |
|
|
|
* Utilisez un modèle de langage pour générer une description textuelle de l'image.
|
|
|
|
* Utilisez un modèle de génération d'image pour créer une image à partir d'une description
|
|
|
|
|
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
* **`Séquence 4 : AI, droit, société et éthique`** <a name='seq4'>
|
|
|
|
* **`Séquence 4 : AI, droit, société et éthique`**
|
|
|
|
|
|
|
|
> **Durée : 2h / Jeudi 7 décembre 2023, 14h**
|
|
|
|
* L'impact croissant de l'IA sur la société et les enjeux qui en découlent
|
| ... | ... | @@ -112,8 +122,7 @@ Cette première partie est composées de 4 séquences, de novembre à décembre |
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
|
|
|
|
# `II. Résoudre mon problème avec de l’IA 🛰️ `<a name='toc2'></a>
|
|
|
|
# `II. Résoudre mon problème avec de l’IA 🛰️`
|
|
|
|
|
|
|
|
L' IA est comme une boîte à outils magique qui peut résoudre toutes sortes de problèmes. Mais avant de pouvoir l'utiliser, il y a quelques choses que nous devons savoir. Imaginez que vous ayez une boîte à outils géniale, mais que vous ne sachiez pas comment l'utiliser. C'est là que les fondamentaux, la base Python et les mathématiques entrent en jeu.
|
|
|
|
|
| ... | ... | @@ -121,7 +130,7 @@ Cette deuxieme partie, **accessible à un large public, avec des prérequis de b |
|
|
|
|
|
|
|
Cette deuxième partie est composées de 11 séquences, de Janvier à Avril 2024:
|
|
|
|
|
|
|
|
* **`Séquence 5 : Mathématiques, gradients everywhere !!!`** <a name='seq5'>
|
|
|
|
* **`Séquence 5 : Mathématiques, gradients everywhere !!!`**
|
|
|
|
|
|
|
|
> **Durée : 2h / Jeudi 11 janvier 2024, 14h**
|
|
|
|
* Présentation mathématique de l'optimisation par descente de gradient
|
| ... | ... | @@ -129,10 +138,9 @@ Cette deuxième partie est composées de 11 séquences, de Janvier à Avril 2024 |
|
|
|
* Mise en lumière de l'intérêt pratique des méthodes stochastiques
|
|
|
|
* Exemple proposé : Programmation à la main de l'apprentissage d'un réseau convolutif
|
|
|
|
|
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
* **`Séquence 6 : Méthodologie des modèles/apprentissage + fine-tuning + TP`** <a name='seq6'>
|
|
|
|
* **`Séquence 6 : Méthodologie des modèles/apprentissage + fine-tuning + TP`**
|
|
|
|
|
|
|
|
> **Durée : 2h / Jeudi 18 Janvier 2024, 14h**
|
|
|
|
* Présentation de l'apprentissage automatique et des différents types de modèles
|
| ... | ... | @@ -142,7 +150,7 @@ Cette deuxième partie est composées de 11 séquences, de Janvier à Avril 2024 |
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
* **`Séquence 7 : Réseaux convolutifs CNN`** <a name='seq7'>
|
|
|
|
* **`Séquence 7 : Réseaux convolutifs CNN`**
|
|
|
|
|
|
|
|
> **Durée: 2h / Jeudi 25 Janvier 2024, 14h**
|
|
|
|
* Principes et concepts des réseaux convolutifs (CNN)
|
| ... | ... | @@ -152,7 +160,7 @@ Cette deuxième partie est composées de 11 séquences, de Janvier à Avril 2024 |
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
* **`Séquence 8 : RNN & Transformers`** <a name='seq8'>
|
|
|
|
* **`Séquence 8 : RNN & Transformers`**
|
|
|
|
|
|
|
|
> **Durée: 2h / Jeudi 1 février 2024, 14h**
|
|
|
|
* Au tout début étaient les RNN
|
| ... | ... | @@ -164,7 +172,7 @@ Cette deuxième partie est composées de 11 séquences, de Janvier à Avril 2024 |
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
* **`Séquence 9 : Autoencodeur (AE), un exemple d'apprentissage self supervised`** <a name='seq9'>
|
|
|
|
* **`Séquence 9 : Autoencodeur (AE), un exemple d'apprentissage self supervised`**
|
|
|
|
|
|
|
|
> **Durée : 2h / jeudi 8 fevrier 2024 , 14h**
|
|
|
|
* Principes et architecture d'un autoencodeur (AE)
|
| ... | ... | @@ -174,7 +182,7 @@ Cette deuxième partie est composées de 11 séquences, de Janvier à Avril 2024 |
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
* **`Séquence 10 : Variational Autoencoder (VAE), jouer avec les espaces latents`** <a name='seq10'>
|
|
|
|
* **`Séquence 10 : Variational Autoencoder (VAE), jouer avec les espaces latents`**
|
|
|
|
|
|
|
|
> **Durée : 2h / jeudi 15 fevrier 2024, 14h**
|
|
|
|
* Principes et architecture d’un Variational AutoEncodeur (VAE)
|
| ... | ... | @@ -184,7 +192,8 @@ Cette deuxième partie est composées de 11 séquences, de Janvier à Avril 2024 |
|
|
|
* Exemple proposé : Génération de données
|
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
* **`Séquence 11 : Generative Adversarial Networks (GAN)`** <a name='seq11'>
|
|
|
|
|
|
|
|
* **`Séquence 11 : Generative Adversarial Networks (GAN)`**
|
|
|
|
|
|
|
|
> **Durée : 2h / jeudi 7 Mars 2024, 14h**
|
|
|
|
* Principes et architecture d'un GAN
|
| ... | ... | @@ -193,7 +202,7 @@ Cette deuxième partie est composées de 11 séquences, de Janvier à Avril 2024 |
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
* **`Séquence 12: Travailler avec des données structurées` : Graph Neural Network (GNN)** <a name='seq12'>
|
|
|
|
* **`Séquence 12: Travailler avec des données structurées` : Graph Neural Network (GNN)**
|
|
|
|
|
|
|
|
> **Durée : 2h / Jeudi 14 Mars 2024, 14h**
|
|
|
|
- Omniprésence et problématique des graphes
|
| ... | ... | @@ -203,7 +212,7 @@ Cette deuxième partie est composées de 11 séquences, de Janvier à Avril 2024 |
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
* **`Séquence 13 : Diffusion model, text to image`** <a name='seq13'>
|
|
|
|
* **`Séquence 13 : Diffusion model, text to image`**
|
|
|
|
|
|
|
|
> **Durée : 2h / jeudi 21 Mars 2024, 14h**
|
|
|
|
* Principe des Diffusion Model
|
| ... | ... | @@ -213,7 +222,7 @@ Cette deuxième partie est composées de 11 séquences, de Janvier à Avril 2024 |
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
* **`Séquence 14: Tactiques et stratégies du Deep Reinforcement Learning`** <a name='seq14'>
|
|
|
|
* **`Séquence 14: Tactiques et stratégies du Deep Reinforcement Learning`**
|
|
|
|
|
|
|
|
> **Durée : 2h / Jeudi 28 Mars, 14h**
|
|
|
|
* Algorithme de Reinforcement Learning : Q-Learning, SARSA, etc
|
| ... | ... | @@ -223,7 +232,7 @@ Cette deuxième partie est composées de 11 séquences, de Janvier à Avril 2024 |
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
* **`Séquence 15 : Des neurones pour la physique, les physics-informed neural networks (PINNS)`** <a name='seq15'>
|
|
|
|
* **`Séquence 15 : Des neurones pour la physique, les physics-informed neural networks (PINNS)`**
|
|
|
|
|
|
|
|
> **Durée: 2h / Jeudi 4 avril 2024, 14h**
|
|
|
|
* Problématique et concepts
|
| ... | ... | @@ -235,7 +244,7 @@ Cette deuxième partie est composées de 11 séquences, de Janvier à Avril 2024 |
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
# `III. Acteur de l’IA, Optimisation, conception, etc. 🛠️ `<a name='toc3'></a>
|
|
|
|
# `III. Acteur de l’IA, Optimisation, conception, etc. 🛠️`
|
|
|
|
|
|
|
|
L' IA est devenue l'un des domaines technologiques les plus influents de notre époque, révolutionnant divers secteurs de l'industrie et de la recherche. Au cœur de cette révolution se trouvent les acteurs de l'IA, des chercheurs et des ingénieurs qui conçoivent, développent et optimisent des systèmes intelligents capables d'apprendre et de prendre des décisions autonomes.
|
|
|
|
|
| ... | ... | @@ -243,7 +252,7 @@ L'optimisation, tant au niveau des modèles que des algorithmes, est un pilier e |
|
|
|
|
|
|
|
Cette partie presentera 5 séquences :
|
|
|
|
|
|
|
|
* **`Séquence 16 : Fusion de modèle / multi-modalité`** <a name='seq16'>
|
|
|
|
* **`Séquence 16 : Fusion de modèle / multi-modalité`**
|
|
|
|
|
|
|
|
> **Durée : 2h / jeudi 11 avril, 14h**
|
|
|
|
- Présentation de la fusion de modèles et de l'apprentissage multi-modal
|
| ... | ... | @@ -252,9 +261,9 @@ Cette partie presentera 5 séquences : |
|
|
|
- Préparation des données multimodales pour la fusion
|
|
|
|
- TP - Mise en œuvre de la fusion de modèles profonds.
|
|
|
|
|
|
|
|
[Back to Home](#toc) <br>
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
* **`Séquence 17 : Apprendre plus vite et moins cher, optimiser l’apprentissage et réduire notre empreinte carbone`** <a name='seq17'>
|
|
|
|
* **`Séquence 17 : Apprendre plus vite et moins cher, optimiser l’apprentissage et réduire notre empreinte carbone`**
|
|
|
|
|
|
|
|
> **Durée : 2h / jeudi 2 mai, 14h**
|
|
|
|
* Techniques d’optimisation
|
| ... | ... | @@ -264,7 +273,7 @@ Cette partie presentera 5 séquences : |
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
* **`Séquence 18 : Passer à la vitesse supérieure : l’accélération matérielle`** <a name='seq18'>
|
|
|
|
* **`Séquence 18 : Passer à la vitesse supérieure : l’accélération matérielle`**
|
|
|
|
|
|
|
|
> **Durée : 2h / Jeudi 16 mai, 14h**
|
|
|
|
* Présentation de Jean-Zay et calcul sur GPU
|
| ... | ... | @@ -275,7 +284,7 @@ Cette partie presentera 5 séquences : |
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
* **`Séquence 19 : Nouveaux Frameworks d’apprentissage / Nouvelles Technos`** <a name='seq19'>
|
|
|
|
* **`Séquence 19 : Nouveaux Frameworks d’apprentissage / Nouvelles Technos`**
|
|
|
|
|
|
|
|
> **Durée : 2h / Jeudi 23 mai, 14h**
|
|
|
|
* Présentation aux nouveaux frameworks d'apprentissage
|
| ... | ... | @@ -284,29 +293,24 @@ Cette partie presentera 5 séquences : |
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
* **`Séquence 20 : Cas pratiques / retour d’expérience`** <a name='seq20'>
|
|
|
|
* **`Séquence 20 : Cas pratiques / retour d’expérience`**
|
|
|
|
|
|
|
|
> **Durée : 2h / jeudi 30 mai, 14h**
|
|
|
|
* fine tuning et mise en œuvre d’un LLM
|
|
|
|
* exemple multimodal illustrant un travail de préparation et d’adaptation
|
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
* **`JDLS2024 : Perspective /Futur (JDLS) 👩🔬`** <a name='jdls'>
|
|
|
|
|
|
|
|
* **`JDLS2024 : Perspective /Futur (JDLS) 👩🔬`**
|
|
|
|
|
|
|
|
> **Vendredi 24 Mai 2024, 9h30-17h30**
|
|
|
|
|
|
|
|
L'IDRIS et l'ANF Fidle, avec le soutien de GENCI, MITI CNRS, EFELIA MIAI et GRICAD, vous proposent une journée Deep Learning pour La Science (JDLS).
|
|
|
|
|
|
|
|
Cette journée clôturera, en présentiel hybride, notre saison Fidle 🙂
|
|
|
|
Cette journée clôturera, en présentiel hybride, notre saison Fidle :slight_smile:
|
|
|
|
|
|
|
|
Cet évènement aura lieu le **vendredi 24 mai 2024** au siège du CNRS, à Paris Michel-Ange, dans le grand auditorium.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Back to Home](#toc)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
\ No newline at end of file |