Médéric Hurier (Fmind) commited on
Commit
beb32ed
0 Parent(s):

Initial commit

Browse files
.gitattributes ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.bin filter=lfs diff=lfs merge=lfs -text
2
+ *.ftz filter=lfs diff=lfs merge=lfs -text
3
+ *.gz filter=lfs diff=lfs merge=lfs -text
4
+ *.h5 filter=lfs diff=lfs merge=lfs -text
5
+ *.joblib filter=lfs diff=lfs merge=lfs -text
6
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
7
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
8
+ *.model filter=lfs diff=lfs merge=lfs -text
9
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
10
+ *.npy filter=lfs diff=lfs merge=lfs -text
11
+ *.npz filter=lfs diff=lfs merge=lfs -text
12
+ *.onnx filter=lfs diff=lfs merge=lfs -text
13
+ *.ot filter=lfs diff=lfs merge=lfs -text
14
+ *.parquet filter=lfs diff=lfs merge=lfs -text
15
+ *.pb filter=lfs diff=lfs merge=lfs -text
16
+ *.pickle filter=lfs diff=lfs merge=lfs -text
17
+ *.pkl filter=lfs diff=lfs merge=lfs -text
18
+ *.pt filter=lfs diff=lfs merge=lfs -text
19
+ *.pth filter=lfs diff=lfs merge=lfs -text
20
+ *.rar filter=lfs diff=lfs merge=lfs -text
21
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
22
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
23
+ *.sqlite3 filter=lfs diff=lfs merge=lfs -text
24
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
25
+ *.tar filter=lfs diff=lfs merge=lfs -text
26
+ *.tflite filter=lfs diff=lfs merge=lfs -text
27
+ *.tgz filter=lfs diff=lfs merge=lfs -text
28
+ *.wasm filter=lfs diff=lfs merge=lfs -text
29
+ *.xz filter=lfs diff=lfs merge=lfs -text
30
+ *.zip filter=lfs diff=lfs merge=lfs -text
31
+ *.zst filter=lfs diff=lfs merge=lfs -text
32
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # https://git-scm.com/docs/gitignore
2
+
3
+ # gradio
4
+ flagged/
5
+ gradio_cached_examples/
6
+
7
+ # mypy
8
+ .mypy_cache/
9
+
10
+ # python
11
+ __pycache__/
12
+
13
+ # venv
14
+ .venv/
.python-version ADDED
@@ -0,0 +1 @@
 
 
1
+ 3.11
LICENSE.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://opensource.org/license/mit/
README.md ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Resume
3
+ emoji: 🧑🏻‍💻
4
+ colorFrom: grey
5
+ colorTo: green
6
+ sdk: gradio
7
+ python_version: 3.11
8
+ sdk_version: 3.46.0
9
+ app_file: app.py
10
+ fullWidth: false
11
+ pinned: false
12
+ license: mit
13
+ ---
14
+
15
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Answer questions about my resume."""
2
+
3
+ # %% IMPORTS
4
+
5
+ import logging
6
+
7
+ import gradio as gr
8
+ import tiktoken
9
+
10
+ import lib
11
+
12
+ # %% LOGGING
13
+
14
+ logging.basicConfig(
15
+ level=logging.INFO,
16
+ format="[%(asctime)s][%(levelname)s] %(message)s",
17
+ )
18
+
19
+ # %% CONFIGS
20
+
21
+ TITLE = "Fmind AI Assistant"
22
+ THEME = "glass"
23
+ CLIENT = lib.get_database_client(path="database")
24
+ ENCODING = tiktoken.get_encoding("cl100k_base")
25
+ FUNCTION = lib.get_embedding_function()
26
+ COLLECTION = CLIENT.get_collection(
27
+ name=lib.DATABASE_COLLECTION,
28
+ embedding_function=FUNCTION,
29
+ )
30
+ EXAMPLES = [
31
+ "Who is Médéric Hurier (Fmind)?",
32
+ "Is Fmind open to new opportunities?",
33
+ "What is Médéric's most recent degree?",
34
+ "What is Médéric's latest work experience?",
35
+ "Is Médéric proficient in Python programming?",
36
+ ]
37
+
38
+ # %% FUNCTIONS
39
+
40
+
41
+ def answer(message: str, history: list[str]) -> str:
42
+ """Answer questions about my resume."""
43
+ tokens = ENCODING.encode(message)
44
+ print("History:", len(history))
45
+ print("Tokens:", len(tokens))
46
+ return message
47
+
48
+
49
+ # %% INTERFACES
50
+
51
+ interface = gr.ChatInterface(
52
+ fn=answer,
53
+ theme=THEME,
54
+ title=TITLE,
55
+ examples=EXAMPLES,
56
+ clear_btn=None,
57
+ retry_btn=None,
58
+ undo_btn=None,
59
+ )
60
+
61
+ # %% ENTRYPOINTS
62
+
63
+ if __name__ == "__main__":
64
+ interface.launch()
database.py ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """Manage the project database."""
3
+
4
+ # %% IMPORTS
5
+
6
+ import argparse
7
+ import logging
8
+ import re
9
+ import sys
10
+ import typing as T
11
+
12
+ import lib
13
+
14
+ # %% LOGGING
15
+
16
+ logging.basicConfig(
17
+ level=logging.DEBUG,
18
+ format="[%(asctime)s][%(levelname)s] %(message)s",
19
+ )
20
+
21
+ # %% PARSING
22
+
23
+ PARSER = argparse.ArgumentParser(description=__doc__)
24
+ PARSER.add_argument("--database", type=str, required=True)
25
+ PARSER.add_argument("files", type=argparse.FileType("r"), nargs="+")
26
+
27
+ # %% FUNCTIONS
28
+
29
+
30
+ def segment_text(text: str, pattern: str) -> T.Iterator[tuple[str, str]]:
31
+ """Segment the text in title and content pair by pattern."""
32
+ splits = re.split(pattern, text, flags=re.MULTILINE)
33
+ pairs = zip(splits[1::2], splits[2::2])
34
+ return pairs
35
+
36
+
37
+ def import_file(file: T.TextIO, collection: lib.Collection) -> int:
38
+ """Import a markdown file to a database collection."""
39
+ imported = 0
40
+ text = file.read()
41
+ filename = file.name
42
+ segments_h1 = segment_text(text=text, pattern=r"^# (.+)")
43
+ for h1, h1_text in segments_h1:
44
+ logging.debug('\t- H1: "%s" (%d)', h1, len(h1_text))
45
+ segments_h2 = segment_text(text=h1_text, pattern=r"^## (.+)")
46
+ for h2, content in segments_h2:
47
+ logging.debug('\t\t- H2: "%s" (%d)', h2, len(content))
48
+ id_ = f"{filename} # {h1} ## {h2}" # unique doc id
49
+ document = f"# {h1}\n\n## {h2}\n\n{content.strip()}"
50
+ metadata = {"filename": filename, "h1": h1, "h2": h2}
51
+ assert len(content) < 8000, f"Content is too long: #{h1} ##{h2}"
52
+ collection.add(ids=id_, documents=document, metadatas=metadata)
53
+ imported += len(document)
54
+ return imported
55
+
56
+
57
+ def main(args: list[str] | None = None) -> int:
58
+ """Main function of the script."""
59
+ # parsing
60
+ opts = PARSER.parse_args(args)
61
+ # database
62
+ database_path = opts.database
63
+ logging.info("Database path: %s", database_path)
64
+ client = lib.get_database_client(path=database_path)
65
+ logging.info("- Reseting database client: %s", client.reset())
66
+ # embedding
67
+ embedding_function = lib.get_embedding_function()
68
+ logging.info("Embedding function: %s", embedding_function)
69
+ # collection
70
+ database_collection = lib.DATABASE_COLLECTION
71
+ logging.info("Database collection: %s", database_collection)
72
+ collection = client.create_collection(
73
+ name=database_collection, embedding_function=embedding_function
74
+ )
75
+ # files
76
+ for i, file in enumerate(opts.files):
77
+ logging.info("Importing file %d: %s", i, file.name)
78
+ imported = import_file(file=file, collection=collection)
79
+ logging.info("- Docs imported from file %s: %d chars", i, imported)
80
+ # return
81
+ return 0
82
+
83
+
84
+ # %% ENTRYPOINTS
85
+
86
+
87
+ if __name__ == "__main__":
88
+ sys.exit(main())
database/554fcd7c-6a4f-4732-bde1-c069ca314316/data_level0.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f18abd8c514282db82706e52b0a33ed659cd534e925a6f149deb7af9ce34bd8e
3
+ size 6284000
database/554fcd7c-6a4f-4732-bde1-c069ca314316/header.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:effaa959ce2b30070fdafc2fe82096fc46e4ee7561b75920dd3ce43d09679b21
3
+ size 100
database/554fcd7c-6a4f-4732-bde1-c069ca314316/length.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fc19b1997119425765295aeab72d76faa6927d4f83985d328c26f20468d6cc76
3
+ size 4000
database/554fcd7c-6a4f-4732-bde1-c069ca314316/link_lists.bin ADDED
File without changes
database/chroma.sqlite3 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3b9f1ba4fe737d92cd7ad2230f67c0a9dd793ad0185a1a38d9ef5e9618e6923b
3
+ size 1671168
files/linkedin.html ADDED
The diff for this file is too large to render. See raw diff
 
files/linkedin.md ADDED
@@ -0,0 +1,1168 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Profile
2
+
3
+ ## Overview
4
+
5
+ - First name: Médéric
6
+ - Last name: HURIER
7
+ - Pseudo: Fmind
8
+ - Followers: 4K
9
+ - Location: Luxembourg, Luxembourg
10
+ - Education: University of Luxembourg
11
+ - Current position: Decathlon Technology
12
+ - Public URL: www.linkedin.com/in/fmind-dev
13
+ - Industry: Technology, Information and Internet
14
+ - Address: 28 Avenue François Clément, 5612 Mondorf-les-Bains, Luxembourg
15
+ - Headline: Freelancer | AI/ML/MLOps Engineer | Data Scientist | MLOps Community Organizer | OpenClassrooms Mentor | Hacker | PhD
16
+
17
+ ## Websites
18
+
19
+ - Company website: https://www.fmind.dev
20
+ - Twitter: https://twitter.com/fmind_dev
21
+ - Portfolio: https://github.com/fmind/
22
+ - Blog: https://fmind.medium.com/
23
+
24
+ ## About
25
+
26
+ Note: I'm not available to work on new missions until the 1st of
27
+ September 2024. Thank you for your understanding.
28
+
29
+ When I worked as a teacher, I told my students that Artificial
30
+ Intelligence and Machine Learning are the most effective levers to make
31
+ a difference. Every day, new AI and ML solutions are released to empower
32
+ companies and individuals alike. The question is: Is your business ready
33
+ to provide the best AI/ML products for your customers?
34
+
35
+ I'm a professional Machine Learning Engineer, Data Scientist, and MLOps
36
+ ready to assist you in this quest. I've completed a Ph.D. in Machine
37
+ Learning and several high-end AI/ML certifications to help you build
38
+ leading data-driven services. My past experiences include working with
39
+ companies like Google, BNP Paribas, ArcelorMittal, the European
40
+ Commission, and Decathlon to frame their needs, create state-of-the-art
41
+ models and deliver AI/ML artifacts at scale.
42
+
43
+ I now work as a freelancer in Luxembourg, and I can carry out missions
44
+ remotely in other European countries. You can get in touch with me on
45
+ LinkedIn or at contact@fmind.dev. I'll be happy to collaborate with you
46
+ or discuss your favored AI/ML topics in the MLOps Community.
47
+
48
+ # Experience
49
+
50
+ ## Lead MLOps Engineer
51
+
52
+ - Company: Decathlon Technology
53
+ - Period: Sep 2022 - Present
54
+ - Location: Luxembourg (Hybrid)
55
+ - Mission: Continue the design and implementation of Decathlon's MLOps platform with Databricks and AWS.
56
+ - Skills: Artificial Intelligence (AI) · Machine Learning · MLOps · Python · ChatGPT · Agile Methodology · MLflow · Docker · Jira · Git · DataBricks · Apache Airflow · AWS SageMaker · Terraform · Apache Spark · Kubernetes
57
+
58
+ ## Mentor for aspiring Data Scientist and AI/ML Engineer
59
+
60
+ - Company: OpenClassrooms
61
+ - Period: Mar 2023 - Present
62
+ - Location: France (Remote)
63
+ - Mission: Tutoring adult students to become data scientists specializing in machine learning.
64
+ - Courses:
65
+ - https://openclassrooms.com/fr/paths/793-data-scientist
66
+ - https://openclassrooms.com/fr/paths/794-machine-learning-engineer
67
+ - https://openclassrooms.com/fr/paths/795-ai-engineer
68
+ - Skills: Artificial Intelligence (AI) · Machine Learning · Python · Deep Learning · Data Science · Statistics · ChatGPT · Big Data · Jupyter · Pandas · Git · Natural Language Processing (NLP) · Scikit-Learn
69
+
70
+ ## Senior Data Scientist & Project Manager
71
+
72
+ - Company: Cronos Europa
73
+ - Customer: European Commission
74
+ - Period: Dec 2021 - Sep 2022
75
+ - Location: Luxembourg (Hybrid)
76
+ - Mission: Enhance the ARACHNE risk scoring tool (fraud detection).
77
+ - Main tasks and responsibilities:
78
+ - Develop a new version of Arachne using data mining techniques
79
+ - Manage the development of the Arachne PoC/Project (SCRUM)
80
+ - Assist data scientists in their projects (Virtual Assistant, NLP,
81
+ …)
82
+ - Skills: Artificial Intelligence (AI) · Machine Learning · MLOps · Python · Deep Learning · Data Science · Big Data · Agile Methodology · Project Management · Functional Programming · Jupyter · Pandas · Docker · Jira · Git · PostgreSQL · AWS SageMaker · Flask · UML · API REST · Terraform · Transformers · Natural Language Processing (NLP) · Data Engineering · Microsoft Azure Machine Learning · Neo4j
83
+
84
+ ## Project Manager & Machine Learning Engineer
85
+
86
+ - Company: SFEIR Luxembourg
87
+ - Period: Dec 2020 - Dec 2021
88
+ - Location: Luxembourg (Remote)
89
+ - Mission: Design and implement the next ML/MLOps platform on AWS and GCP.
90
+ - Main tasks and responsibilities:
91
+ - Design the functional & technical architecture of the platform
92
+ - Manage the MLOps@Decathlon initiative (tasks, plannings)
93
+ - Select the vendor solutions based on a user need analysis
94
+ - Communicate the progress and success to stack-holders
95
+ - Assist data scientists in their project (audience, forecast)
96
+ - Technical stack:
97
+ - Data Science: Python, TensorFlow, Spark, sklearn, Jupyter, Airflow
98
+ - Management: Google Workspace, Jira, UML, Terraform, Jenkins
99
+ - Environments: AWS (SageMaker), GCP (Vertex AI), DataBricks
100
+ - Skills: Artificial Intelligence (AI) · Machine Learning · MLOps · Python · Deep Learning · Data Science · Big Data · Agile Methodology · Project Management · Functional Programming · Google Cloud Platform (GCP) · Tensorflow · MLflow · Jupyter · Pandas · Docker · Keras · Jira · Git · DataBricks · Apache Airflow · AWS SageMaker · Flask · UML · Terraform · Data Engineering · Vertex AI (GCP) · Apache Spark · Scikit-Learn · Kubernetes
101
+
102
+ ## Data Scientist
103
+
104
+ - Company: SFEIR
105
+ - Period: Oct 2020 - Nov 2020
106
+ - Location: Luxembourg (Remote)
107
+ - Mission: Improve the visibility and assets of SFEIR's Data Team.
108
+ - Main tasks and responsibilities:
109
+ - Design and create technical interviews for recruiting data scientists.
110
+ - Become a Professional Machine Learning Engineer on Google Cloud.
111
+ - Propose a strategy to improve the online visibility of SFEIR data team.
112
+ - Share knowledge about data trends with non-technical staff members.
113
+ - Create a group to write tutorials and kata on AI/ML for SFEIR developers.
114
+ - Skills: Artificial Intelligence (AI) · Machine Learning · MLOps · Python · Deep Learning · Data Science · Agile Methodology · Functional Programming · Google Cloud Platform (GCP) · Tensorflow · Jupyter · Pandas · Keras · Git · MongoDB · Vertex AI (GCP) · Apache Spark · Scikit-Learn
115
+
116
+ ## Data Scientist
117
+
118
+ - Company: SFEIR
119
+ - Customer: ArcelorMittal
120
+ - Period: Jan 2020 - Sep 2020
121
+ - Location: Luxembourg (Remote)
122
+ - Mission: Train and optimize machine learning models to recommend steel prices.
123
+ - Main tasks and responsibilities:
124
+ - Create and fine-tune machine-learning models (tree-based)
125
+ - Evaluate the performance of the model on real datasets
126
+ - Communicate the results to business stack-holders
127
+ - Technical stack:
128
+ - Data Science: Python, XGBoost, sklearn, Jupyter, SQL
129
+ - Analytics: Matplotlib, Seaborn, Tableau, Plotly, Dash
130
+ - Environment: MS-SQL, Azure Cloud, Jira, Papermill
131
+ - Skills: Artificial Intelligence (AI) · Machine Learning · MLOps · Python · Data Science · Agile Methodology · Functional Programming · Jupyter · Pandas · Jira · Git · Natural Language Processing (NLP) · Scikit-Learn
132
+
133
+ ## Research And Development Specialist
134
+
135
+ - Company: University of Luxembourg
136
+ - Period: Sep 2019 - Jan 2020
137
+ - Location: Luxembourg
138
+ - Mission: Management and development of Natural Language Understanding (NLU) projects for BGL BNP Paribas.
139
+ - Skills: Artificial Intelligence (AI) · Machine Learning · Python · Data Science · Big Data · Functional Programming · Tensorflow · Jupyter · Pandas · Docker · Git · PostgreSQL · Ansible · Flask · UML · JSON · API REST · Transformers · Natural Language Processing (NLP) · Apache Spark · Scikit-Learn
140
+
141
+ ## Doctoral researcher
142
+
143
+ - Company: University of Luxembourg
144
+ - Period: Sep 2015 - Jan 2020
145
+ - Location: Luxembourg
146
+ - Missions:
147
+ - Research activities focused on Android security and artificial intelligence.
148
+ - Teaching big data, machine learning and Android programming to students.
149
+ - Collaboration with Google, San Francisco on finding malicious Android artifacts.
150
+ - Skills: Artificial Intelligence (AI) · Machine Learning · Python · Deep Learning · Data Science · Statistics · Big Data · Cybersecurity · Functional Programming · Jupyter · Pandas · Docker · Git · NoSQL · MongoDB · PostgreSQL · ElasticSearch · Ansible · Flask · JSON · Android · API REST · Natural Language Processing (NLP) · Data Engineering · Apache Spark · Scikit-Learn
151
+
152
+ ## Mentor for aspiring Data Scientist
153
+
154
+ - Company: OpenClassrooms
155
+ - Period: Aug 2018 - Dec 2019
156
+ - Location: France
157
+ - Mission: Tutoring adult students to become data scientists specializing in machine learning.
158
+ - Skills: Artificial Intelligence (AI) · Machine Learning · Python · Data Science · Jupyter · Pandas · Git · Flask · JSON · API REST · Scikit-Learn
159
+
160
+ ## Security engineer specialized in log management and analysis
161
+
162
+ - Company: Clearstream
163
+ - Period: Apr 2014 - Aug 2015
164
+ - Location: Luxembourg
165
+ - Mission: Selection and deployment of a SIEM solution, participating in security incident response.
166
+ - Skills: Python · Big Data · ISO 27001 · Cybersecurity · Jupyter · Pandas · Git · ElasticSearch · Data Engineering
167
+
168
+ ## Web developer and administrator
169
+
170
+ - Company: Freaxmind
171
+ - Period: Aug 2011 - Aug 2013
172
+ - Location: France
173
+ - Mission: Various contracts ranging from web development to software maintenance and debugging.
174
+ - Skills: Python · Object Oriented Programming (POO) · Git · Ansible · Flask
175
+
176
+ ## Web Developer
177
+
178
+ - Company: Toul'embal
179
+ - Period: Jun 2012 - Aug 2012
180
+ - Location: Toul, France
181
+ - Mission: Extension of a Prestashop e-commerce website and creation a portfolio website with WordPress.
182
+ - Skills: Object Oriented Programming (POO)
183
+
184
+ ## Web Programmer
185
+
186
+ - Company: Empreinte Studio
187
+ - Period: Oct 2010 - Aug 2011
188
+ - Location: Épernay, France
189
+ - Mission: Creation of modern website in PHP and MySQL with professional writers and graphic designers.
190
+ - Skills: Object Oriented Programming (POO) · Git
191
+
192
+ ## Software Developer
193
+
194
+ - Company: GEOVARIANCES
195
+ - Period: Sep 2009 - Sep 2010
196
+ - Location: Avon, France
197
+ - Mission: Development of a geostatistic application in C++ and Qt with experienced software engineers.
198
+ - Skills: Object Oriented Programming (POO) · Git · UML
199
+
200
+ ## Web Developer
201
+
202
+ - Company: CV Champagne Nicolas Feuillatte
203
+ - Period: Apr 2009 - Aug 2009
204
+ - Location: Épernay, France
205
+ - Mission: Integration of customer and share management modules to J.D. Edwards with PHP and Oracle.
206
+ - Skills: Object Oriented Programming (POO)
207
+
208
+ # Education
209
+
210
+ ## Doctor of Philosophy (PhD) in computer security and artificial intelligence
211
+
212
+ - School: University of Luxembourg
213
+ - Location: Luxembourg
214
+ - Grade: Very Good
215
+ - Period: 2015 - 2019
216
+ - Activities and Societies: Teach Big Data and Android to students.
217
+ - Thesis title: Creating better ground truth to further understand Android malware
218
+
219
+ ## Master's degree in computer and information systems security
220
+
221
+ - School: UFR Mathématiques, Informatique, Mécanique et Automatique
222
+ - Location: Metz (France)
223
+ - Period: 2013 - 2014
224
+
225
+ ## Bachelor and master years in computer science applied to business informatics
226
+
227
+ - School: UFR Mathématiques et Informatique de l’Université de Lorraine
228
+ - Location: Nancy (France)
229
+ - Period: 2011 - 2013
230
+
231
+ ## Professional bachelor's degree in computer security and databases
232
+
233
+ - School: IUT Sénart-Fontainebleau
234
+ - Location: Fontainebleau (France)
235
+ - Period: 2009 - 2010
236
+
237
+ ## Professional bachelor’s degree in web development and integration
238
+
239
+ - School: IUT Nancy-Charlemagne
240
+ - Location: Nancy (France)
241
+ - Period: 2008 - 2009
242
+
243
+ ## Technical degree in network and software development
244
+
245
+ - School: Lycée François 1er
246
+ - Location: Vitry-le-François (France)
247
+ - Period: 2006 - 2008
248
+
249
+ ## Baccalauréat général degree in science, specialized in biology
250
+
251
+ - School: Lycée Marc Chagall
252
+ - Location: Reims (France)
253
+ - Period: 2003 - 2006
254
+
255
+ # Volunteer Experiences
256
+
257
+ ## MLOps Community Organizer (Luxembourg)
258
+
259
+ - Community: MLOps Community
260
+ - Role: Organizer
261
+ - Location: Luxembourg
262
+ - Period: Nov 2022 - present
263
+ - Field: Science and Technology
264
+ - Mission: Organize regular meetups and events for the MLOps Community.
265
+ - Partners: AWS and the University of Luxembourg.
266
+ - Link: https://www.meetup.com/luxembourg-mlops-community/
267
+
268
+ # Licenses & Certifications
269
+
270
+ ## Machine Learning Associate
271
+
272
+ - Issuer: Databricks
273
+ - Issued: Nov 2022
274
+ - Credential ID: 61461287
275
+
276
+ ## Databricks Lakehouse Fundamentals
277
+
278
+ - Issuer: Databricks
279
+ - Issued: Oct 2022
280
+ - Credential ID: 61029028
281
+
282
+ ## Architecting with Google Kubernetes Engine Specialization
283
+
284
+ - Issuer: Google
285
+ - Issued: Sep 2022
286
+ - Credential ID: WLU4DBPSQ4B5
287
+
288
+ ## Architecting with Google Kubernetes Engine: Foundations
289
+
290
+ - Issuer: Google
291
+ - Issued: Sep 2022
292
+ - Credential ID: DFWAC6BXLNGL
293
+
294
+ ## Architecting with Google Kubernetes Engine: Production
295
+
296
+ - Issuer: Google
297
+ - Issued: Sep 2022
298
+ - Credential ID: K5SZHUST5HP2
299
+
300
+ ## Architecting with Google Kubernetes Engine: Workloads
301
+
302
+ - Issuer: Google
303
+ - Issued: Sep 2022
304
+ - Credential ID: ULJQAXGDVKYK
305
+
306
+ ## Google Cloud Fundamentals: Core Infrastructure
307
+
308
+ - Issuer: Google
309
+ - Issued: Sep 2022
310
+ - Credential ID: 4CE8WQ6AWKFF
311
+
312
+ ## Iterative Tools for Data Scientists and Analysts
313
+
314
+ - Issuer: Iterative
315
+ - Issued: Aug 2022
316
+ - Credential ID: 62fcb79418f51945ea
317
+
318
+ ## Azure Data Scientist Associate
319
+
320
+ - Issuer: Microsoft
321
+ - Issued: Jul 2022
322
+ - Credential ID: 992564946
323
+
324
+ ## Azure Machine Learning for Data Scientists
325
+
326
+ - Issuer: Microsoft
327
+ - Issued: Jun 2022
328
+ - Credential ID: MZKV7LSTQ9HX
329
+
330
+ ## Build and Operate Machine Learning Solutions with Azure Microsoft
331
+
332
+ - Issuer: Microsoft
333
+ - Issued: Jun 2022
334
+ - Credential ID: 7FBX68MH272C
335
+
336
+ ## Create Machine Learning Models in Microsoft Azure
337
+
338
+ - Issuer: Microsoft
339
+ - Issued: Jun 2022
340
+ - Credential ID: SHALM9PM3MPX
341
+
342
+ ## Microsoft Azure Data Scientist Associate - DP-100 Test Prep Specialization
343
+
344
+ - Issuer: Microsoft
345
+ - Issued: Jun 2022
346
+ - Credential ID: L5P3TYLAYLLT
347
+
348
+ ## Perform data science with Azure Databricks
349
+
350
+ - Issuer: Microsoft
351
+ - Issued: Jun 2022
352
+ - Credential ID: RQ7PLFYZVLXX
353
+
354
+ ## Prepare for DP-100: Data Science on Microsoft Azure Exam
355
+
356
+ - Issuer: Microsoft
357
+ - Issued: Jun 2022
358
+ - Credential ID: K5KW27AVMYS2
359
+
360
+ ## Neo4j Graph Data Science Certified
361
+
362
+ - Issuer: Neo4j
363
+ - Issued: Apr 2022
364
+ - Credential ID: 17351346
365
+
366
+ ## Microsoft Certified: Azure AI Fundamentals
367
+
368
+ - Issuer: Microsoft
369
+ - Issued: Jan 2022
370
+ - Credential ID: 1098-0884
371
+
372
+ ## Artificial Intelligence on Microsoft Azure
373
+
374
+ - Issuer: Microsoft
375
+ - Issued: Dec 2021
376
+ - Credential ID: Z8FSWXBSAGLD
377
+
378
+ ## Computer Vision in Microsoft Azure
379
+
380
+ - Issuer: Microsoft
381
+ - Issued: Dec 2021
382
+ - Credential ID: KDDPYLKM2DA5
383
+
384
+ ## Microsoft Azure AI Fundamentals AI-900 Exam Prep Specialization
385
+
386
+ - Issuer: Microsoft
387
+ - Issued: Dec 2021
388
+ - Credential ID: 96944QKZH9BU
389
+
390
+ ## Microsoft Azure Machine Learning
391
+
392
+ - Issuer: Microsoft
393
+ - Issued: Dec 2021
394
+ - Credential ID: 32ES25845Q55
395
+
396
+ ## Natural Language Processing in Microsoft Azure
397
+
398
+ - Issuer: Microsoft
399
+ - Issued: Dec 2021
400
+ - Credential ID: XVN23N8CKRGY
401
+
402
+ ## Preparing for AI-900: Microsoft Azure AI Fundamentals exam
403
+
404
+ - Issuer: Microsoft
405
+ - Issued: Dec 2021
406
+ - Credential ID: YC83C22L8TBL
407
+
408
+ ## Build a Website on Google Cloud
409
+
410
+ - Issuer: Google
411
+ - Issued: Aug 2021
412
+
413
+ ## Build and Secure Networks in Google Cloud
414
+
415
+ - Issuer: Google
416
+ - Issued: Aug 2021
417
+
418
+ ## Create ML Models with BigQuery ML
419
+
420
+ - Issuer: Google
421
+ - Issued: Aug 2021
422
+
423
+ ## Create and Manage Cloud Resources
424
+
425
+ - Issuer: Google
426
+ - Issued: Aug 2021
427
+
428
+ ## Deploy to Kubernetes in Google Cloud
429
+
430
+ - Issuer: Google
431
+ - Issued: Aug 2021
432
+
433
+ ## Implement DevOps in Google Cloud
434
+
435
+ - Issuer: Google
436
+ - Issued: Aug 2021
437
+
438
+ ## Insights from Data with BigQuery
439
+
440
+ - Issuer: Google
441
+ - Issued: Aug 2021
442
+
443
+ ## Integrate with Machine Learning APIs
444
+
445
+ - Issuer: Google
446
+ - Issued: Aug 2021
447
+
448
+ ## Perform Foundational Infrastructure Tasks in Google Cloud
449
+
450
+ - Issuer: Google
451
+ - Issued: Aug 2021
452
+
453
+ ## Apache Spark Associate Developer
454
+
455
+ - Issuer: Databricks
456
+ - Issued: Jun 2021
457
+ - Credential ID: fff03919-bbc9-304e-99ad-6f2ed47455ed
458
+
459
+ ## Scalable Machine Learning with Apache Spark
460
+
461
+ - Issuer: Databricks
462
+ - Issued: May 2021
463
+ - Credential ID: 0f4adf96-0412-32f2-8232-fa50c51c9b47
464
+
465
+ ## Apache Spark Programming with Databricks
466
+
467
+ - Issuer: Databricks
468
+ - Issued: May 2021
469
+ - Credential ID: 518a1d63-8894-3ab5-aaa5-50a9f169436c
470
+
471
+ ## Data Science Professional
472
+
473
+ - Issuer: Databricks
474
+ - Issued: May 2021
475
+ - Credential ID: f05164e1-5a78-37f8-9c69-3e996fdbb21f
476
+
477
+ ## Delta Lake Fundamentals Accreditation
478
+
479
+ - Issuer: Databricks
480
+ - Issued: May 2021
481
+ - Credential ID: 0d042e3f-50d3-3821-b064-f3c12ca6c17f
482
+
483
+ ## Deploying a Machine Learning Project with MLflow Projects
484
+
485
+ - Issuer: Databricks
486
+ - Issued: May 2021
487
+ - Credential ID: 2afa0c7f-48f4-35af-b366-f7c77d2cd20a
488
+
489
+ ## Tracking Experiments with MLflow
490
+
491
+ - Issuer: Databricks
492
+ - Issued: May 2021
493
+ - Credential ID: 0cbf87b7-e096-3792-a3b7-62d86aa6380d
494
+
495
+ ## Unified Data Analytics Accreditation
496
+
497
+ - Issuer: Databricks
498
+ - Issued: May 2021
499
+ - Credential ID: afba5402-b5e4-3f9e-95f2-51d6bbb5fa64
500
+
501
+ ## ML Pipelines on Google Cloud
502
+
503
+ - Issuer: Google
504
+ - Issued: Mar 2021
505
+ - Credential ID: FN5PYWX5PRCP
506
+
507
+ ## Introduction to Trading, Machine Learning & GCP
508
+
509
+ - Issuer: Google
510
+ - Issued: Nov 2020
511
+ - Credential ID: YV9H5PF4YPLZ
512
+
513
+ ## MLOps (Machine Learning Operations) Fundamentals
514
+
515
+ - Issuer: Google
516
+ - Issued: Nov 2020
517
+ - Credential ID: 4BDA24UL7K9Z
518
+
519
+ ## Machine Learning for Trading Specialization
520
+
521
+ - Issuer: Google
522
+ - Issued: Nov 2020
523
+ - Credential ID: YSNPABSMV6JL
524
+
525
+ ## Reinforcement Learning for Trading Strategies
526
+
527
+ - Issuer: Google
528
+ - Issued: Nov 2020
529
+ - Credential ID: VHKJLFPLLDLU
530
+
531
+ ## Using Machine Learning in Trading and Finance
532
+
533
+ - Issuer: Google
534
+ - Issued: Nov 2020
535
+ - Credential ID: X5YYLBMPY4BU
536
+
537
+ ## DeepLearning.AI TensorFlow Developer Specialization
538
+
539
+ - Issuer: DeepLearning.AI
540
+ - Issued: Oct 2020
541
+ - Credential ID: LQ4GHWJ6URBS
542
+
543
+ ## Perform Foundational Data, ML, and AI Tasks in Google Cloud
544
+
545
+ - Issuer: Google
546
+ - Issued: Oct 2020
547
+
548
+ ## Professional Machine Learning Engineer
549
+
550
+ - Issuer: Google
551
+ - Issued: Oct 2020
552
+ - Credential ID: 24896478
553
+
554
+ ## Sequences, Time Series and Prediction
555
+
556
+ - Issuer: Google
557
+ - Issued: Oct 2020
558
+ - Credential ID: WHBV68C4WJT5
559
+
560
+ ## Convolutional Neural Networks in TensorFlow
561
+
562
+ - Issuer: Google
563
+ - Issued: Sep 2020
564
+ - Credential ID: 78HJEJZ3T2BB
565
+
566
+ ## Introduction to TensorFlow for Artificial Intelligence, Machine Learning, and Deep Learning
567
+
568
+ - Issuer: Google
569
+ - Issued: Sep 2020
570
+ - Credential ID: SW885ZMDHTYM
571
+
572
+ ## Natural Language Processing in TensorFlow
573
+
574
+ - Issuer: Google
575
+ - Issued: Sep 2020
576
+ - Credential ID: JZ9TBHXJFLWM
577
+
578
+ ## Advanced Machine Learning with TensorFlow on Google Cloud Platform Specialization
579
+
580
+ - Issuer: Google
581
+ - Issued: Jul 2020
582
+ - Credential ID: V492QQ4JJKEB
583
+
584
+ ## End-to-End Machine Learning with TensorFlow on GCP
585
+
586
+ - Issuer: Google
587
+ - Issued: Jul 2020
588
+ - Credential ID: QLDMNADDBSRR
589
+
590
+ ## Image Understanding with TensorFlow on GCP
591
+
592
+ - Issuer: Google
593
+ - Issued: Jul 2020
594
+ - Credential ID: HY4HSSY8JSPN
595
+
596
+ ## Production Machine Learning Systems
597
+
598
+ - Issuer: Google
599
+ - Issued: Jul 2020
600
+ - Credential ID: THZZNW22LHKT
601
+
602
+ ## Recommendation Systems with TensorFlow on GCP
603
+
604
+ - Issuer: Google
605
+ - Issued: Jul 2020
606
+ - Credential ID: 2D4LT28697TC
607
+
608
+ ## Sequence Models for Time Series and Natural Language Processing
609
+
610
+ - Issuer: Google
611
+ - Issued: Jul 2020
612
+ - Credential ID: 6XUV7YJFM3ZA
613
+
614
+ ## Building Batch Data Pipelines on GCP
615
+
616
+ - Issuer: Google
617
+ - Issued: May 2020
618
+ - Credential ID: 5QYSK9E5EAFN
619
+
620
+ ## Building Resilient Streaming Analytics Systems on GCP
621
+
622
+ - Issuer: Google
623
+ - Issued: May 2020
624
+ - Credential ID: FYQW7D4F6PD4
625
+
626
+ ## Data Engineering with Google Cloud Specialization
627
+
628
+ - Issuer: Google
629
+ - Issued: May 2020
630
+ - Credential ID: EPZ3WQFC423E
631
+
632
+ ## Modernizing Data Lakes and Data Warehouses with GCP
633
+
634
+ - Issuer: Google
635
+ - Issued: May 2020
636
+ - Credential ID: 393P3HLZWY8H
637
+
638
+ ## Smart Analytics, Machine Learning, and AI on GCP
639
+
640
+ - Issuer: Google
641
+ - Issued: May 2020
642
+ - Credential ID: AK77VUVN4ARJ
643
+
644
+ ## Google Cloud Platform Big Data and Machine Learning Fundamentals
645
+
646
+ - Issuer: Google
647
+ - Issued: Apr 2020
648
+ - Credential ID: 2Q35NYHYMW5E
649
+
650
+ ## Devenez Mentor Evaluateur
651
+
652
+ - Issuer: OpenClassrooms
653
+ - Issued: Feb 2019
654
+ - Credential ID: 8151214336
655
+
656
+ ## Advanced AI: Deep Reinforcement Learning in Python
657
+
658
+ - Issuer: Udemy
659
+ - Issued: Aug 2018
660
+ - Credential ID: UC-5FM0CC9S
661
+
662
+ ## Artificial Intelligence: Reinforcement Learning in Python
663
+
664
+ - Issuer: Udemy
665
+ - Issued: Jul 2018
666
+ - Credential ID: UC-XALJEH7G
667
+
668
+ ## Concevez un site avec Flask
669
+
670
+ - Issuer: OpenClassrooms
671
+ - Issued: Jul 2018
672
+ - Credential ID: 5343531703
673
+
674
+ ## Les étapes de la vie du Mentor
675
+
676
+ - Issuer: OpenClassrooms
677
+ - Issued: Jul 2018
678
+ - Credential ID: 8431716200
679
+
680
+ ## Devenez Mentor chez OpenClassrooms
681
+
682
+ - Issuer: OpenClassrooms
683
+ - Issued: May 2018
684
+ - Credential ID: 6193593386
685
+
686
+ ## Complete Guide to ElasticSearch
687
+
688
+ - Issuer: Udemy
689
+ - Issued: Mar 2018
690
+ - Credential ID: UC-H5AJQVA3
691
+
692
+ ## Introduction to Hadoop
693
+
694
+ - Issuer: The Linux Foundation
695
+ - Issued: Oct 2017
696
+ - Credential ID: ad676a8fe7994edea33516b80b540971
697
+
698
+ ## Artificial Intelligence Nanodegree
699
+
700
+ - Issuer: Udacity
701
+ - Issued: Sep 2017
702
+ - Credential ID: PV7A7EAA
703
+
704
+ ## High Performance Computing
705
+
706
+ - Issuer: University of Luxembourg
707
+ - Issued: Feb 2017
708
+
709
+ ## Machine Learning
710
+
711
+ - Issuer: Standford University
712
+ - Issued: Sep 2015
713
+ - Grade: 97%
714
+
715
+ ## TOEIC
716
+
717
+ - Skills: Listening, Reading
718
+ - Issued: Jan 2014
719
+ - Score: 975/990
720
+
721
+ # Publications
722
+
723
+ ## Is AI/ML Monitoring just Data Engineering? 🤔
724
+
725
+ - Publisher: MLOps Community
726
+ - Publication date: July 24, 2023
727
+ - Link: https://mlops.community/is-ai-ml-monitoring-just-data-engineering-%f0%9f%a4%94/
728
+
729
+ While the future of machine learning and MLOps is being debated,
730
+ practitioners still need to attend to their machine learning models
731
+ in production. This is no easy task, as ML engineers must constantly
732
+ assess the quality of the data that enters and exits their
733
+ pipelines, and ensure that their models generate the correct
734
+ predictions. To assist ML engineers with this challenge, several
735
+ AI/ML monitoring solutions have been developed.
736
+ In this article, I will discuss the nature of AI/ML monitoring and
737
+ how it relates to data engineering. First, I will present the
738
+ similarities between AI/ML monitoring and data engineering. Second,
739
+ I will enumerate additional features that AI/ML monitoring solutions
740
+ can provide. Third, I will briefly touch on the topic of AI/ML
741
+ observability and its relation to AI/ML monitoring. Finally, I will
742
+ provide my conclusion about the field of AI/ML monitoring and how it
743
+ should be considered to ensure the success of your AI/ML project.
744
+
745
+ ## A great MLOps project should start with a good Python Package 🐍
746
+
747
+ - Publisher: MLOps Community
748
+ - Publication date: June 28, 2023
749
+ - Link: https://mlops.community/a-great-mlops-project-should-start-with-a-good-python-package-%f0%9f%90%8d/
750
+
751
+ In this article, I present the implementation of a Python package on
752
+ GitHub designed to support MLOps initiatives. The goal of this
753
+ package is to make the coding workflow of data scientists and ML
754
+ engineers as flexible, robust, and productive as possible. First, I
755
+ start by motivating the use of Python packages. Then, I provide some
756
+ tools and tips you can include in your MLOps project. Finally, I
757
+ explain the follow-up steps required to take this package to the
758
+ next level and make it work in your environment.
759
+
760
+ ## Fixing the MLOps Survey on LLMs with ChatGPT API: Lessons Learned
761
+
762
+ - Publisher: MLOps Community
763
+ - Publication date: May 11, 2023
764
+ - Link: https://mlops.community/fixing-the-mlops-survey-on-llms-with-chatgpt-api-lessons-learned/
765
+
766
+ Large Language Model (LLM) is such an existing topic. Since the
767
+ release of ChatGPT, we saw a surge of innovation ranging from
768
+ education mentorship to finance advisory. Each week is a new
769
+ opportunity for addressing new kinds of problems, increasing human
770
+ productivity, or improving existing solutions. Yet, we may wonder if
771
+ this is just a new hype cycle or if organizations are truly adopting
772
+ LLMs at scale …
773
+ On March 2023, the MLOps Community issued a survey about LLMs in
774
+ production to picture the state of adoption. The survey is full of
775
+ interesting insights, but there is a catch: 80% of the questions are
776
+ open-ended, which means respondents answered the survey freely from
777
+ a few keywords to full sentences. I volunteered to clean up the
778
+ answers with the help of ChatGPT and let the community get a grasp
779
+ of the survey experiences.
780
+ In this article, I present the steps and lessons learned from my
781
+ journey to shed some light on the MLOps survey on LLMs. I’m first
782
+ going to present the goal and questions of the survey. Then, I will
783
+ explain how I used ChatGPT to review the data and standardize the
784
+ content. Finally, I’m going to evaluate the performance of ChatGPT
785
+ compared to a manual review.
786
+
787
+ ## Kubeflow: The Machine Learning Toolkit for Kubernetes
788
+
789
+ - Publisher: MLOps Community in Luxembourg
790
+ - Publication date: April 26, 2023
791
+ - Link: https://docs.google.com/presentation/d/1WtN5mNAHsz7PiWE5kKZUQfQ9_zO_kfVoSBNTHQM-sMk/edit#slide=id.p1
792
+
793
+ ## MLflow: An open source platform for the machine learning lifecycle
794
+
795
+ - Publisher: MLOps Community in Luxembourg
796
+ - Publication date: April 26, 2023
797
+ - Link: https://docs.google.com/presentation/d/1fjoQ2DnTzhyaMI9dC6E2_RIKylW8hAGS5iQ6TapZfZo/edit#slide=id.g1e1b3ce30cd_0_0
798
+
799
+ ## We need POSIX for MLOps
800
+
801
+ - Publisher: MLOps Community
802
+ - Publication date: April 21, 2023
803
+ - Link: https://mlops.community/we-need-posix-for-mlops/
804
+
805
+ If you work on MLOps, you must navigate an ever-growing landscape of
806
+ tools and solutions. This is both an intense source of stimulation
807
+ and fatigue for MLOps practitioners.
808
+ Vendors and users face the same problem: How can we combine all
809
+ these tools without the combinatorial complexity of creating custom
810
+ integrations?
811
+ In this article, I propose a solution analogous to POSIX to address
812
+ this challenge. First, I motivate the creation of common protocols
813
+ and schemas for combining MLOps tools. Second, I present a
814
+ high-level architecture to support implementation. Third, I conclude
815
+ with the benefits and limitations of standardizing MLOps.
816
+
817
+ ## How to install Kubeflow Pipelines v2 on Apple Silicon
818
+
819
+ - Publisher: Medium
820
+ - Publication date: September 24, 2022
821
+ - Link: https://fmind.medium.com/how-to-install-kubeflow-on-apple-silicon-3565db8773f3
822
+
823
+ Kubeflow Pipelines (KFP) is a powerful platform for building machine
824
+ learning pipelines at scale with Kubernetes. The platform is well
825
+ supported on major cloud platforms such as GCP (Vertex AI Pipelines)
826
+ or AWS (Kubeflow on AWS). However, installing KFP on Apple Silicon
827
+ (macOS 12.5.1 with Apple M1 Pro) proved to be more challenging than
828
+ I imagined. Thus, I wanted to share my experience and tips to
829
+ install KFP as easily as possible on your shiny Mac.
830
+ In this article, I present 4 steps to install Kubeflow on Apple
831
+ Silicon, using Rancher Desktop for setting up Docker/Kubernetes. In
832
+ the end, I list the problems I encountered during the installation
833
+ of Kubeflow Pipelines.
834
+
835
+ ## The Programming Trade-Off: Purpose, Productivity, Performance
836
+
837
+ - Publisher: Medium
838
+ - Publication: August 15, 2019
839
+ - Link: https://fmind.medium.com/3p-principle-purpose-productivity-performance-630bed7623fc
840
+
841
+ As programmers, we are continuously looking for languages that are
842
+ performant, productive, and general purpose. Is there any
843
+ programming language that currently satisfies these properties? Can
844
+ we ever create one?
845
+ In this article, I present a fundamental trade-off that affects the
846
+ design of programming languages and the success of software
847
+ projects.
848
+
849
+ ## Creating better ground truth to further understand Android malware: A large scale mining approach based on antivirus labels and malicious artifacts
850
+
851
+ - Publisher: University of Luxembourg
852
+ - Publication date: July 1, 2019
853
+ - Link: https://orbilu.uni.lu/handle/10993/39903
854
+
855
+ Mobile applications are essential for interacting with technology
856
+ and other people. With more than 2 billion devices deployed all over
857
+ the world, Android offers a thriving ecosystem by making accessible
858
+ the work of thousands of developers on digital marketplaces such as
859
+ Google Play. Nevertheless, the success of Android also exposes
860
+ millions of users to malware authors who seek to siphon private
861
+ information and hijack mobile devices for their benefits.
862
+ To fight against the proliferation of Android malware, the security
863
+ community embraced machine learning, a branch of artificial
864
+ intelligence that powers a new generation of detection systems.
865
+ Machine learning algorithms, however, require a substantial number
866
+ of qualified samples to learn the classification rules enforced by
867
+ security experts. Unfortunately, malware ground truths are
868
+ notoriously hard to construct due to the inherent complexity of
869
+ Android applications and the global lack of public information about
870
+ malware. In a context where both information and human resources are
871
+ limited, the security community is in demand for new approaches to
872
+ aid practitioners to accurately define Android malware, automate
873
+ classification decisions, and improve the comprehension of Android
874
+ malware.
875
+ This dissertation proposes three solutions to assist with the
876
+ creation of malware ground truths.
877
+
878
+ ## Euphony: Harmonious Unification of Cacophonous Anti-Virus Vendor Labels for Android Malware
879
+
880
+ - Publisher: MSR 2017
881
+ - Publication date: May 21, 2017
882
+ - Link: https://orbilu.uni.lu/handle/10993/31441
883
+
884
+ Android malware is now pervasive and evolving rapidly. Thousands of
885
+ malware samples are discovered every day with new models of attacks.
886
+ The growth of these threats has come hand in hand with the
887
+ proliferation of collective repositories sharing the latest
888
+ specimens. Having access to a large number of samples opens new
889
+ research directions aiming at efficiently vetting apps. However,
890
+ automatically inferring a reference ground-truth from those
891
+ repositories is not straightforward and can inadvertently lead to
892
+ unforeseen misconceptions. On the one hand, samples are often
893
+ mislabeled as different parties use distinct naming schemes for the
894
+ same sample. On the other hand, samples are frequently misclassified
895
+ due to conceptual errors made during labeling processes.
896
+ In this paper, we analyze the associations between all labels given
897
+ by different vendors and we propose a system called EUPHONY to
898
+ systematically unify common samples into family groups. The key
899
+ novelty of our approach is that no prior knowledge of malware
900
+ families is needed. We evaluate our approach using reference
901
+ datasets and more than 0.4 million additional samples outside of
902
+ these datasets. Results show that EUPHONY provides competitive
903
+ performance against the state-of-the-art.
904
+
905
+ ## On the Lack of Consensus in Anti-Virus Decisions: Metrics and Insights on Building Ground Truths of Android Malware
906
+
907
+ - Publisher: DIMVA 2016
908
+ - Publication date: July 7, 2016
909
+ - Link: https://orbilu.uni.lu/handle/10993/27845
910
+
911
+ There is generally a lack of consensus in Antivirus (AV) engines'
912
+ decisions on a given sample. This challenges the building of
913
+ authoritative ground-truth datasets. Instead, researchers and
914
+ practitioners may rely on unvalidated approaches to build their
915
+ ground truth, e.g., by considering decisions from a selected set of
916
+ Antivirus vendors or by setting up a threshold number of positive
917
+ detections before classifying a sample. Both approaches are biased
918
+ as they implicitly either decide on ranking AV products, or they
919
+ consider that all AV decisions have equal weights. In this paper, we
920
+ extensively investigate the lack of agreement among AV engines.
921
+ To that end, we propose a set of metrics that quantitatively
922
+ describe the different dimensions of this lack of consensus. We show
923
+ how our metrics can bring important insights by using the detection
924
+ results of 66 AV products on 2 million Android apps as a case study.
925
+ Our analysis focuses not only on AV binary decision but also on the
926
+ notoriously hard problem of labels that AVs associate with
927
+ suspicious files, and allows to highlight biases hidden in the
928
+ collection of a malware ground truth---a foundation stone of any
929
+ machine learning-based malware detection approach.
930
+
931
+ # Projects
932
+
933
+ ## MLOps Python Package
934
+
935
+ - Date: Jun 2023 - Jun 2023
936
+ - Description: Kickstart your MLOps initiative with a flexible, robust, and productive Python package.
937
+ - Link: https://github.com/fmind/mlops-python-package
938
+
939
+ ## Fixing the MLOps Survey with ChatGPT
940
+
941
+ - Date: May 2023 - May 2023
942
+ - Description: Fixing the MLOps Survey on LLMs with ChatGPT API.
943
+ - Link: https://fmind.medium.com/fixing-the-mlops-survey-on-llms-with-chatgpt-api-lessons-learned-62d90e721331
944
+
945
+ ## Kubeflow Demo
946
+
947
+ - Date: Apr 2023 - Apr 2023
948
+ - Description: Kubeflow demo for the MLOps Community Meetup in Luxembourg.
949
+ - Link: https://github.com/fmind/kubeflow-demo
950
+
951
+ ## MLflow Demo
952
+
953
+ - Date: Apr 2023 - Apr 2023
954
+ - Description: MLflow demo for the MLOps Community Meetup in Luxembourg.
955
+ - Link: https://github.com/fmind/mlflow-demo
956
+
957
+ ## onet
958
+
959
+ - Date: Aug 2020 - Sep 2020
960
+ - Description: Train and predict procedures of DNN for binary image classification
961
+ - Link: https://github.com/fmind/onet
962
+
963
+ ## fincrawl
964
+
965
+ - Date: Nov 2019 - Dec 2019
966
+ - Description: Crawl documents, metadata, and files from financial institutions
967
+ - Link: https://github.com/fmind/fincrawl
968
+
969
+ ## invest
970
+
971
+ - Date: Aug 2019 - Sep 2019
972
+ - Description: Stock market analysis focused on dividends
973
+ - Link: https://github.com/fmind/invest
974
+
975
+ ## parsoc
976
+
977
+ - Date: Jul 2019 - Sep 2019
978
+ - Description: Convert docx files to json
979
+ - Link: https://github.com/fmind/parsoc
980
+
981
+ ## Bigdata Tutorials
982
+
983
+ - Date: Sep 2015 - Jul 2019
984
+ - Description: Tutorials for the Big Data course @ uni.lu
985
+ - Link: https://github.com/fmind/bigdata-tutorials
986
+
987
+ ## STASE: A set of statistical metrics to better understand and qualify malware datasets
988
+
989
+ - Date: Apr 2016 - Jul 2019
990
+ - Description: A handful of statistical metrics to better understand and qualify malware datasets
991
+ - Link: https://github.com/fmind/STASE
992
+
993
+ ## apkworkers
994
+
995
+ - Date: Sep 2015 - Jul 2019
996
+ - Description: A celery application to distribute Android malware analysis
997
+ - Link: https://github.com/fmind/apkworkers
998
+
999
+ ## servalx
1000
+
1001
+ - Date: Sep 2015 - Jul 2019
1002
+ - Description: A set of tools and modules to process Android malware with Androzoo
1003
+ - Link: https://github.com/fmind/servalx
1004
+
1005
+ ## Euphony: Harmonious Unification of Cacophonous Anti-Virus Vendor Labels for Android Malware
1006
+
1007
+ - Date: Mar 2017 - Mar 2019
1008
+ - Description: Harmonious Unification of Cacophonous Anti-Virus Vendor Labels for Android Malware
1009
+ - Link: https://github.com/fmind/euphony
1010
+
1011
+ ## Automatic Speech Recognition with Tensorflow
1012
+
1013
+ - Date: Sep 2017 - Sep 2017
1014
+ - Description: An automatic speech-recognition system based on Tensorflow
1015
+ - Link: https://github.com/fmind/AIND-VUI-Capstone
1016
+
1017
+ ## Dog Recognition with Tensorflow
1018
+
1019
+ - Date: Aug 2017 - Aug 2017
1020
+ - Description: A machine-learning model train to recognize dogs, even from human faces
1021
+ - Link: https://github.com/fmind/dog-project
1022
+
1023
+ ## genius
1024
+
1025
+ - Date: Jun 2017 - Jul 2017
1026
+ - Description: An implementation of LISP Scheme based on Haskell
1027
+ - Link: https://github.com/fmind/genius
1028
+
1029
+ ## Alexa History Skill
1030
+
1031
+ - Date: Jun 2017 - Jun 2017
1032
+ - Description: A Alexa skill that provides year-dated facts on demand
1033
+ - Link: https://github.com/fmind/AIND-VUI-Alexa
1034
+
1035
+ ## Air Cargo Planning System
1036
+
1037
+ - Date: Feb 2017 - Apr 2017
1038
+ - Description: An automated Air Cargo transport system based on AI planning
1039
+ - Link: https://github.com/fmind/AIND-Planning
1040
+
1041
+ ## Sign Language Recognition System
1042
+
1043
+ - Date: Feb 2017 - Apr 2017
1044
+ - Description: A sign recognition system based on Hidden Markov Model
1045
+ - Link: https://github.com/fmind/AIND-Recognizer
1046
+
1047
+ ## AI Agent for the Isolation Game
1048
+
1049
+ - Date: Mar 2017 - Mar 2017
1050
+ - Description: An AI game agent to play the Isolation game
1051
+ - Link: https://github.com/fmind/AIND-Isolation
1052
+
1053
+ ## Sudoku Solver
1054
+
1055
+ - Date: Jan 2017 - Feb 2017
1056
+ - Description: A Diagonal Sudoku solver implemented with Python
1057
+ - Link: https://github.com/fmind/AIND-Sudoku
1058
+
1059
+ ## lkml
1060
+
1061
+ - Date: Nov 2016 - Jan 2017
1062
+ - Description: Gather emails from https://lkml.org/
1063
+ - Link: https://github.com/fmind/lkml
1064
+
1065
+ ## Master 2 School Projects
1066
+
1067
+ - Date: Sep 2013 - Jun 2014
1068
+ - Description: School projects from 2013 to 2014 - Master 2 Sécurité des Systèmes d'Information (Metz)
1069
+ - Link: https://github.com/fmind/master2-projects
1070
+
1071
+ ## chattail
1072
+
1073
+ - Date: Dec 2013 - Mar 2014
1074
+ - Description: Send log streams over XMPP to monitor your systems
1075
+ - Link: https://github.com/fmind/chattail
1076
+
1077
+ ## Master 1 School Projects
1078
+
1079
+ - Date: Jun 2012 - Sep 2013
1080
+ - Link: https://github.com/fmind/master1-projects
1081
+
1082
+ ## Bachelor School Projects
1083
+
1084
+ - Date: Jun 2011 - Sep 2012
1085
+ - Link: https://github.com/fmind/bachelor-projects
1086
+
1087
+ ## Professional Bachelor School Project
1088
+
1089
+ - Date: Sep 2009 - Jun 2010
1090
+ - Link: https://github.com/fmind/professional-bachelor-project
1091
+
1092
+ # Skills
1093
+
1094
+ ## Artificial Intelligence / Machine Learning
1095
+
1096
+ - Artificial Intelligence (AI)
1097
+ - Machine Learning
1098
+ - MLOps
1099
+ - Deep Learning
1100
+ - Data Science
1101
+ - Statistics
1102
+ - ChatGPT
1103
+ - Scikit-Learn
1104
+ - Tensorflow
1105
+ - KubeFlow
1106
+ - MLflow
1107
+ - Jupyter
1108
+ - Pandas
1109
+ - Keras
1110
+ - DVC
1111
+ - Transformers
1112
+ - Natural Language Processing (NLP)
1113
+
1114
+ ## Software Engineering
1115
+
1116
+ - Python
1117
+ - Functional Programming (FP)
1118
+ - Object-Oriented Programming (OOP)
1119
+ - API REST
1120
+ - Android
1121
+ - Docker
1122
+ - JSON
1123
+ - Git
1124
+
1125
+ ## Cloud Platforms
1126
+
1127
+ - AWS SageMaker
1128
+ - Vertex AI (GCP)
1129
+ - Google Cloud Platform (GCP)
1130
+ - Microsoft Azure Machine Learning
1131
+ - Apache Airflow
1132
+ - Kubernetes
1133
+ - DataBricks
1134
+ - Terraform
1135
+ - Ansible
1136
+ - Linux
1137
+
1138
+ ## Computer Security
1139
+
1140
+ - ISO 27001
1141
+ - Cybersecurity
1142
+
1143
+ ## Data Management
1144
+
1145
+ - NoSQL
1146
+ - MongoDB
1147
+ - Big Data
1148
+ - PostgreSQL
1149
+ - Apache Spark
1150
+ - ElasticSearch
1151
+ - Data Engineering
1152
+
1153
+ ## Project Management
1154
+
1155
+ - Agile Methodology
1156
+ - Project Management
1157
+ - Jira
1158
+ - UML
1159
+
1160
+ # Languages
1161
+
1162
+ ## Français
1163
+
1164
+ - Proficiency: Native or bilingual proficiency
1165
+
1166
+ ## English
1167
+
1168
+ - Proficiency: Full professional proficiency
files/linkedin.txt ADDED
@@ -0,0 +1,1937 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Skip to main content
2
+
3
+ Agree & Join LinkedIn
4
+
5
+ By clicking Continue, you agree to LinkedIn’s User Agreement, Privacy
6
+ Policy, and Cookie Policy.
7
+
8
+ Skip to main content
9
+
10
+ LinkedIn
11
+
12
+ - Articles
13
+ - People
14
+ - Learning
15
+ - Jobs
16
+
17
+ Join now Sign in
18
+
19
+ []
20
+
21
+ Médéric HURIER
22
+
23
+ Freelancer: AI/ML/MLOps Engineer | Data Scientist | MLOps Community Organizer | OpenClassrooms Mentor | Hacker | PhD
24
+
25
+ Luxembourg, Luxembourg, Luxembourg
26
+
27
+ 4K followers 500+ connections
28
+
29
+ See your mutual connections
30
+
31
+ View mutual connections with Médéric
32
+
33
+ Sign in
34
+
35
+ Welcome back
36
+
37
+ Email or phone
38
+
39
+ Password
40
+
41
+ Show
42
+
43
+ Forgot password?
44
+
45
+ Sign in
46
+
47
+ or
48
+
49
+ By clicking Continue, you agree to LinkedIn’s User Agreement, Privacy
50
+ Policy, and Cookie Policy.
51
+
52
+ New to LinkedIn? Join now
53
+
54
+ or
55
+
56
+ By clicking Continue, you agree to LinkedIn’s User Agreement, Privacy
57
+ Policy, and Cookie Policy.
58
+
59
+ New to LinkedIn? Join now
60
+
61
+ Sign in to connect
62
+
63
+ Sign in to view Médéric’s full profile
64
+
65
+ Sign in
66
+
67
+ Welcome back
68
+
69
+ Email or phone
70
+
71
+ Password
72
+
73
+ Show
74
+
75
+ Forgot password?
76
+
77
+ Sign in
78
+
79
+ or
80
+
81
+ By clicking Continue, you agree to LinkedIn’s User Agreement, Privacy
82
+ Policy, and Cookie Policy.
83
+
84
+ New to LinkedIn? Join now
85
+
86
+ or
87
+
88
+ By clicking Continue, you agree to LinkedIn’s User Agreement, Privacy
89
+ Policy, and Cookie Policy.
90
+
91
+ New to LinkedIn? Join now
92
+
93
+ Decathlon Technology
94
+
95
+ University of Luxembourg
96
+
97
+ Websites
98
+
99
+ Websites
100
+
101
+ Company Website
102
+ https://www.fmind.dev
103
+
104
+ Portfolio
105
+ https://github.com/fmind/
106
+
107
+ Blog
108
+ https://fmind.medium.com/
109
+
110
+ - Report this profile
111
+
112
+ About
113
+
114
+ Note: I'm not available to work on new missions until the 1st of
115
+ September 2023. Thank you for your understanding.
116
+ When I worked as a teacher, I told my students that Artificial
117
+ Intelligence and Machine Learning are the most effective levers to make
118
+ a difference. Every day, new AI and ML solutions are released to empower
119
+ companies and individuals alike. The question is: Is your business ready
120
+ to provide the best AI/ML products for your customers?
121
+ I'm a professional Machine Learning Engineer, Data Scientist, and MLOps
122
+ ready to assist you in this quest. I've completed a Ph.D. in Machine
123
+ Learning and several high-end AI/ML certifications to help you build
124
+ leading data-driven services. My past experiences include working with
125
+ companies like Google, BNP Paribas, ArcelorMittal, the European
126
+ Commission, and Decathlon to frame their needs, create state-of-the-art
127
+ models and deliver AI/ML artifacts at scale.
128
+ I now work as a freelancer in Luxembourg, and I can carry out missions
129
+ remotely in other European countries. You can get in touch with me on
130
+ LinkedIn or at contact@fmind.dev. I'll be happy to collaborate with you
131
+ or discuss your favored AI/ML topics in the MLOps Community.
132
+
133
+ Experience
134
+
135
+ -
136
+ Lead MLOps Engineer
137
+
138
+ Decathlon Technology
139
+
140
+ Sep 2022 - Present1 year 2 months
141
+
142
+ Luxembourg
143
+
144
+ Continue the design and implementation of Decathlon's MLOps platform
145
+ with Databricks and AWS.
146
+
147
+ -
148
+ Mentor for aspiring Data Scientist and AI/ML Engineer
149
+
150
+ OpenClassrooms
151
+
152
+ Mar 2023 - Present8 months
153
+
154
+ France
155
+
156
+ Tutoring adult students to become data scientists specializing in
157
+ machine learning.
158
+ - https://openclassrooms.com/fr/paths/793-data-scientist
159
+ - https://openclassrooms.com/fr/paths/794-machine-learning-engineer
160
+ - https://openclassrooms.com/fr/paths/795-ai-engineer
161
+
162
+ -
163
+ Senior Data Scientist & Project Manager for the European Commission
164
+
165
+ Cronos Europa
166
+
167
+ Dec 2021 - Sep 202210 months
168
+
169
+ Luxembourg
170
+
171
+ Mission: Enhance the ARACHNE risk scoring tool (fraud detection).
172
+ Main tasks and responsibilities:
173
+ - Develop a new version of Arachne using data mining techniques
174
+ - Manage the development of the Arachne PoC/Project (SCRUM)
175
+ - Assist data scientists in their projects (Virtual Assistant, NLP,
176
+ …)
177
+ Technical stack:
178
+ - Data Science: Python, PostgreSQL, SQLAlchemy, Hugging Face,
179
+ HayStack
180
+ - Management/Environment: Jira, Confluence, MS Office, AWS, Azure
181
+
182
+ -
183
+
184
+ SFEIR
185
+
186
+ 2 years
187
+
188
+ -
189
+ Project Manager & Machine Learning Engineer for Decathlon
190
+
191
+ SFEIR
192
+
193
+ Dec 2020 - Dec 20211 year 1 month
194
+
195
+ Luxembourg
196
+
197
+ Mission: Design and implement the next ML/MLOps platform on AWS
198
+ and GCP.
199
+ Main tasks and responsibilities:
200
+ - Design the functional & technical architecture of the platform
201
+ - Manage the MLOps@Decathlon initiative (tasks, plannings)
202
+ - Select the vendor solutions based on a user need analysis
203
+ - Communicate the progress and success to stack-holders
204
+ - Assist data scientists in their project (audience, forecast)
205
+ Technical stack:
206
+ - Data Science: Python, TensorFlow… Show more
207
+
208
+ Mission: Design and implement the next ML/MLOps platform on AWS
209
+ and GCP.
210
+ Main tasks and responsibilities:
211
+ - Design the functional & technical architecture of the platform
212
+ - Manage the MLOps@Decathlon initiative (tasks, plannings)
213
+ - Select the vendor solutions based on a user need analysis
214
+ - Communicate the progress and success to stack-holders
215
+ - Assist data scientists in their project (audience, forecast)
216
+ Technical stack:
217
+ - Data Science: Python, TensorFlow, Spark, sklearn, Jupyter,
218
+ Airflow
219
+ - Management: Google Workspace, Jira, UML, Terraform, Jenkins
220
+ - Environments: AWS (SageMaker), GCP (Vertex AI), DataBricks
221
+ Show less
222
+ -
223
+ Data Scientist for SFEIR
224
+
225
+ SFEIR
226
+
227
+ Oct 2020 - Nov 20202 months
228
+
229
+ Luxembourg, Luxembourg
230
+
231
+ Mission: Improve the visibility and assets of SFEIR's Data Team.
232
+ Main tasks and responsibilities:
233
+ - Design and create technical interviews for recruiting data
234
+ scientists.
235
+ - Become a Professional Machine Learning Engineer on Google
236
+ Cloud.
237
+ - Propose a strategy to improve the online visibility of SFEIR
238
+ data team.
239
+ - Share knowledge about data trends with non-technical staff
240
+ members.
241
+ - Create a group to write tutorials and kata on AI/ML for SFEIR
242
+ developers.
243
+ -
244
+ Data Scientist for ArcelorMittal
245
+
246
+ SFEIR
247
+
248
+ Jan 2020 - Sep 20209 months
249
+
250
+ Luxembourg
251
+
252
+ Mission: Train and optimize machine learning models to recommend
253
+ steel prices.
254
+ Main tasks and responsibilities:
255
+ - Create and fine-tune machine-learning models (tree-based)
256
+ - Evaluate the performance of the model on real datasets
257
+ - Communicate the results to business stack-holders
258
+ Technical stack:
259
+ - Data Science: Python, XGBoost, sklearn, Jupyter, SQL
260
+ - Analytics: Matplotlib, Seaborn, Tableau, Plotly, Dash
261
+ - Environment: MS-SQL, Azure Cloud, Jira, Papermill
262
+
263
+ -
264
+
265
+ University of Luxembourg
266
+
267
+ 4 years 5 months
268
+
269
+ -
270
+ Research And Development Specialist
271
+
272
+ University of Luxembourg
273
+
274
+ Sep 2019 - Jan 20205 months
275
+
276
+ Luxembourg, Luxembourg
277
+
278
+ Management and development of Natural Language Understanding
279
+ (NLU) projects for BGL BNP Paribas.
280
+ -
281
+ Doctoral researcher
282
+
283
+ University of Luxembourg
284
+
285
+ Sep 2015 - Jan 20204 years 5 months
286
+
287
+ Luxembourg, Luxembourg
288
+
289
+ Research activities focused on Android security and artificial
290
+ intelligence.
291
+ Teaching big data, machine learning and Android programming to
292
+ students.
293
+ Collaboration with Google, San Francisco on finding malicious
294
+ Android artifacts.
295
+
296
+ -
297
+ Mentor for aspiring Data Scientist
298
+
299
+ OpenClassrooms
300
+
301
+ Aug 2018 - Dec 20191 year 5 months
302
+
303
+ France
304
+
305
+ Tutoring adult students to become data scientists specializing in
306
+ machine learning.
307
+
308
+ -
309
+ Security engineer specialized in log management and analysis
310
+
311
+ Clearstream
312
+
313
+ Apr 2014 - Aug 20151 year 5 months
314
+
315
+ Luxembourg, Luxembourg
316
+
317
+ Selection and deployment of a SIEM solution, participating in
318
+ security incident response.
319
+
320
+ - Web developer and administrator
321
+
322
+ Freaxmind
323
+
324
+ Aug 2011 - Aug 20132 years 1 month
325
+
326
+ France
327
+
328
+ Various contracts ranging from web development to software
329
+ maintenance and debugging.
330
+
331
+ -
332
+ Web Developer
333
+
334
+ Toul'embal
335
+
336
+ Jun 2012 - Aug 20123 months
337
+
338
+ Toul, France
339
+
340
+ Extension of a Prestashop e-commerce website and creation a
341
+ portfolio website with WordPress.
342
+
343
+ - Web Programmer
344
+
345
+ Empreinte Studio
346
+
347
+ Oct 2010 - Aug 201111 months
348
+
349
+ Épernay, France
350
+
351
+ Creation of modern website in PHP and MySQL with professional
352
+ writers and graphic designers.
353
+
354
+ -
355
+ Software Developer
356
+
357
+ GEOVARIANCES
358
+
359
+ Sep 2009 - Sep 20101 year 1 month
360
+
361
+ Avon, France
362
+
363
+ Development of a geostatistic application in C++ and Qt with
364
+ experienced software engineers.
365
+
366
+ -
367
+ Web Developer
368
+
369
+ CV Champagne Nicolas Feuillatte
370
+
371
+ Apr 2009 - Aug 20095 months
372
+
373
+ Épernay, France
374
+
375
+ Integration of customer and share management modules to J.D. Edwards
376
+ with PHP and Oracle.
377
+
378
+ Education
379
+
380
+ -
381
+ University of Luxembourg
382
+
383
+ Doctor of Philosophy - PhDComputer Security and Artificial IntelligenceVery Good
384
+
385
+ 2015 - 2019
386
+
387
+ Activities and Societies: Teach Big Data and Android to students.
388
+
389
+ Thesis title: Creating better ground truth to further understand
390
+ Android malware
391
+
392
+ - UFR Mathématiques, Informatique, Mécanique et Automatique, Metz (France)
393
+
394
+ Master's degreecomputer and information systems security
395
+
396
+ 2013 - 2014
397
+
398
+ - UFR Mathématiques et Informatique de l’Université de Lorraine, Nancy (France)
399
+
400
+ Bachelor and master yearscomputer science applied to business informatics
401
+
402
+ 2011 - 2013
403
+
404
+ - IUT Sénart-Fontainebleau, Fontainebleau (France)
405
+
406
+ Professional bachelor's degreecomputer security and databases
407
+
408
+ 2009 - 2010
409
+
410
+ - IUT Nancy-Charlemagne, Nancy (France)
411
+
412
+ Professional bachelor’s degreeweb development and integration
413
+
414
+ 2008 - 2009
415
+
416
+ - Lycée François 1er, Vitry-le-François (France)
417
+
418
+ Technical degreenetwork and software development
419
+
420
+ 2006 - 2008
421
+
422
+ - Lycée Marc Chagall, Reims (France)
423
+
424
+ Baccalauréat général degreescience, specialized in biology
425
+
426
+ 2003 - 2006
427
+
428
+ Volunteer Experience
429
+
430
+ - MLOps Community Organizer (Luxembourg)
431
+ MLOps Community Organizer (Luxembourg)
432
+
433
+ MLOps Community
434
+
435
+ Nov 2022
436
+
437
+ Science and Technology
438
+
439
+ Organize regular meetups and events for the MLOps Community.
440
+ Regular partnership with AWS and the University of Luxembourg.
441
+ https://www.meetup.com/luxembourg-mlops-community/
442
+
443
+ Licenses & Certifications
444
+
445
+ - Machine Learning Associate
446
+
447
+ Databricks
448
+
449
+ Issued Nov 2022
450
+
451
+ Credential ID 61461287
452
+
453
+ See credential
454
+
455
+ - Databricks Lakehouse Fundamentals
456
+
457
+ Databricks
458
+
459
+ Issued Oct 2022
460
+
461
+ Credential ID 61029028
462
+
463
+ See credential
464
+
465
+ - Architecting with Google Kubernetes Engine Specialization
466
+
467
+ Google
468
+
469
+ Issued Sep 2022
470
+
471
+ Credential ID WLU4DBPSQ4B5
472
+
473
+ See credential
474
+
475
+ - Architecting with Google Kubernetes Engine: Foundations
476
+
477
+ Google
478
+
479
+ Issued Sep 2022
480
+
481
+ Credential ID DFWAC6BXLNGL
482
+
483
+ See credential
484
+
485
+ - Architecting with Google Kubernetes Engine: Production
486
+
487
+ Google
488
+
489
+ Issued Sep 2022
490
+
491
+ Credential ID K5SZHUST5HP2
492
+
493
+ See credential
494
+
495
+ - Architecting with Google Kubernetes Engine: Workloads
496
+
497
+ Google
498
+
499
+ Issued Sep 2022
500
+
501
+ Credential ID ULJQAXGDVKYK
502
+
503
+ See credential
504
+
505
+ - Google Cloud Fundamentals: Core Infrastructure
506
+
507
+ Google
508
+
509
+ Issued Sep 2022
510
+
511
+ Credential ID 4CE8WQ6AWKFF
512
+
513
+ See credential
514
+
515
+ - Iterative Tools for Data Scientists and Analysts
516
+
517
+ Iterative
518
+
519
+ Issued Aug 2022
520
+
521
+ Credential ID 62fcb79418f51945ea
522
+
523
+ See credential
524
+
525
+ - Azure Data Scientist Associate
526
+
527
+ Microsoft
528
+
529
+ Issued Jul 2022
530
+
531
+ Credential ID 992564946
532
+
533
+ See credential
534
+
535
+ - Azure Machine Learning for Data Scientists
536
+
537
+ Microsoft
538
+
539
+ Issued Jun 2022
540
+
541
+ Credential ID MZKV7LSTQ9HX
542
+
543
+ See credential
544
+
545
+ - Build and Operate Machine Learning Solutions with Azure Microsoft
546
+
547
+ Microsoft
548
+
549
+ Issued Jun 2022
550
+
551
+ Credential ID 7FBX68MH272C
552
+
553
+ See credential
554
+
555
+ - Create Machine Learning Models in Microsoft Azure
556
+
557
+ Microsoft
558
+
559
+ Issued Jun 2022
560
+
561
+ Credential ID SHALM9PM3MPX
562
+
563
+ See credential
564
+
565
+ - Microsoft Azure Data Scientist Associate - DP-100 Test Prep Specialization
566
+
567
+ Microsoft
568
+
569
+ Issued Jun 2022
570
+
571
+ Credential ID L5P3TYLAYLLT
572
+
573
+ See credential
574
+
575
+ - Perform data science with Azure Databricks
576
+
577
+ Microsoft
578
+
579
+ Issued Jun 2022
580
+
581
+ Credential ID RQ7PLFYZVLXX
582
+
583
+ See credential
584
+
585
+ - Prepare for DP-100: Data Science on Microsoft Azure Exam
586
+
587
+ Microsoft
588
+
589
+ Issued Jun 2022
590
+
591
+ Credential ID K5KW27AVMYS2
592
+
593
+ See credential
594
+
595
+ - Neo4j Graph Data Science Certified
596
+
597
+ Neo4j
598
+
599
+ Issued Apr 2022
600
+
601
+ Credential ID 17351346
602
+
603
+ See credential
604
+
605
+ - Microsoft Certified: Azure AI Fundamentals
606
+
607
+ Microsoft
608
+
609
+ Issued Jan 2022
610
+
611
+ Credential ID 1098-0884
612
+
613
+ See credential
614
+
615
+ - Artificial Intelligence on Microsoft Azure
616
+
617
+ Microsoft
618
+
619
+ Issued Dec 2021
620
+
621
+ Credential ID Z8FSWXBSAGLD
622
+
623
+ See credential
624
+
625
+ - Computer Vision in Microsoft Azure
626
+
627
+ Microsoft
628
+
629
+ Issued Dec 2021
630
+
631
+ Credential ID KDDPYLKM2DA5
632
+
633
+ See credential
634
+
635
+ - Microsoft Azure AI Fundamentals AI-900 Exam Prep Specialization
636
+
637
+ Microsoft
638
+
639
+ Issued Dec 2021
640
+
641
+ Credential ID 96944QKZH9BU
642
+
643
+ See credential
644
+
645
+ - Microsoft Azure Machine Learning
646
+
647
+ Microsoft
648
+
649
+ Issued Dec 2021
650
+
651
+ Credential ID 32ES25845Q55
652
+
653
+ See credential
654
+
655
+ - Natural Language Processing in Microsoft Azure
656
+
657
+ Microsoft
658
+
659
+ Issued Dec 2021
660
+
661
+ Credential ID XVN23N8CKRGY
662
+
663
+ See credential
664
+
665
+ - Preparing for AI-900: Microsoft Azure AI Fundamentals exam
666
+
667
+ Microsoft
668
+
669
+ Issued Dec 2021
670
+
671
+ Credential ID YC83C22L8TBL
672
+
673
+ See credential
674
+
675
+ - Build a Website on Google Cloud
676
+
677
+ Google
678
+
679
+ Issued Aug 2021
680
+
681
+ See credential
682
+
683
+ - Build and Secure Networks in Google Cloud
684
+
685
+ Google
686
+
687
+ Issued Aug 2021
688
+
689
+ See credential
690
+
691
+ - Create ML Models with BigQuery ML
692
+
693
+ Google
694
+
695
+ Issued Aug 2021
696
+
697
+ See credential
698
+
699
+ - Create and Manage Cloud Resources
700
+
701
+ Google
702
+
703
+ Issued Aug 2021
704
+
705
+ See credential
706
+
707
+ - Deploy to Kubernetes in Google Cloud
708
+
709
+ Google
710
+
711
+ Issued Aug 2021
712
+
713
+ See credential
714
+
715
+ - Implement DevOps in Google Cloud
716
+
717
+ Google
718
+
719
+ Issued Aug 2021
720
+
721
+ See credential
722
+
723
+ - Insights from Data with BigQuery
724
+
725
+ Google
726
+
727
+ Issued Aug 2021
728
+
729
+ See credential
730
+
731
+ - Integrate with Machine Learning APIs
732
+
733
+ Google
734
+
735
+ Issued Aug 2021
736
+
737
+ See credential
738
+
739
+ - Perform Foundational Infrastructure Tasks in Google Cloud
740
+
741
+ Google
742
+
743
+ Issued Aug 2021
744
+
745
+ See credential
746
+
747
+ - Apache Spark Associate Developer
748
+
749
+ Databricks
750
+
751
+ Issued Jun 2021
752
+
753
+ Credential ID fff03919-bbc9-304e-99ad-6f2ed47455ed
754
+
755
+ See credential
756
+
757
+ - Scalable Machine Learning with Apache Spark
758
+
759
+ Databricks
760
+
761
+ Issued May 2021
762
+
763
+ Credential ID 0f4adf96-0412-32f2-8232-fa50c51c9b47
764
+
765
+ See credential
766
+
767
+ - Apache Spark Programming with Databricks
768
+
769
+ Databricks
770
+
771
+ Issued May 2021
772
+
773
+ Credential ID 518a1d63-8894-3ab5-aaa5-50a9f169436c
774
+
775
+ See credential
776
+
777
+ - Data Science Professional
778
+
779
+ Databricks
780
+
781
+ Issued May 2021
782
+
783
+ Credential ID f05164e1-5a78-37f8-9c69-3e996fdbb21f
784
+
785
+ See credential
786
+
787
+ - Delta Lake Fundamentals Accreditation
788
+
789
+ Databricks
790
+
791
+ Issued May 2021
792
+
793
+ Credential ID 0d042e3f-50d3-3821-b064-f3c12ca6c17f
794
+
795
+ See credential
796
+
797
+ - Deploying a Machine Learning Project with MLflow Projects
798
+
799
+ Databricks
800
+
801
+ Issued May 2021
802
+
803
+ Credential ID 2afa0c7f-48f4-35af-b366-f7c77d2cd20a
804
+
805
+ See credential
806
+
807
+ - Tracking Experiments with MLflow
808
+
809
+ Databricks
810
+
811
+ Issued May 2021
812
+
813
+ Credential ID 0cbf87b7-e096-3792-a3b7-62d86aa6380d
814
+
815
+ See credential
816
+
817
+ - Unified Data Analytics Accreditation
818
+
819
+ Databricks
820
+
821
+ Issued May 2021
822
+
823
+ Credential ID afba5402-b5e4-3f9e-95f2-51d6bbb5fa64
824
+
825
+ See credential
826
+
827
+ - ML Pipelines on Google Cloud
828
+
829
+ Google
830
+
831
+ Issued Mar 2021
832
+
833
+ Credential ID FN5PYWX5PRCP
834
+
835
+ See credential
836
+
837
+ - Introduction to Trading, Machine Learning & GCP
838
+
839
+ Google
840
+
841
+ Issued Nov 2020
842
+
843
+ Credential ID YV9H5PF4YPLZ
844
+
845
+ See credential
846
+
847
+ - MLOps (Machine Learning Operations) Fundamentals
848
+
849
+ Google
850
+
851
+ Issued Nov 2020
852
+
853
+ Credential ID 4BDA24UL7K9Z
854
+
855
+ See credential
856
+
857
+ - Machine Learning for Trading Specialization
858
+
859
+ Google
860
+
861
+ Issued Nov 2020
862
+
863
+ Credential ID YSNPABSMV6JL
864
+
865
+ See credential
866
+
867
+ - Reinforcement Learning for Trading Strategies
868
+
869
+ Google
870
+
871
+ Issued Nov 2020
872
+
873
+ Credential ID VHKJLFPLLDLU
874
+
875
+ See credential
876
+
877
+ - Using Machine Learning in Trading and Finance
878
+
879
+ Google
880
+
881
+ Issued Nov 2020
882
+
883
+ Credential ID X5YYLBMPY4BU
884
+
885
+ See credential
886
+
887
+ - DeepLearning.AI TensorFlow Developer Specialization
888
+
889
+ DeepLearning.AI
890
+
891
+ Issued Oct 2020
892
+
893
+ Credential ID LQ4GHWJ6URBS
894
+
895
+ See credential
896
+
897
+ - Perform Foundational Data, ML, and AI Tasks in Google Cloud
898
+
899
+ Google
900
+
901
+ Issued Oct 2020
902
+
903
+ See credential
904
+
905
+ - Professional Machine Learning Engineer
906
+
907
+ Google
908
+
909
+ Issued Oct 2020
910
+
911
+ Credential ID 24896478
912
+
913
+ See credential
914
+
915
+ - Sequences, Time Series and Prediction
916
+
917
+ Google
918
+
919
+ Issued Oct 2020
920
+
921
+ Credential ID WHBV68C4WJT5
922
+
923
+ See credential
924
+
925
+ - Convolutional Neural Networks in TensorFlow
926
+
927
+ Google
928
+
929
+ Issued Sep 2020
930
+
931
+ Credential ID 78HJEJZ3T2BB
932
+
933
+ See credential
934
+
935
+ - Introduction to TensorFlow for Artificial Intelligence, Machine Learning, and Deep Learning
936
+
937
+ Google
938
+
939
+ Issued Sep 2020
940
+
941
+ Credential ID SW885ZMDHTYM
942
+
943
+ See credential
944
+
945
+ - Natural Language Processing in TensorFlow
946
+
947
+ Google
948
+
949
+ Issued Sep 2020
950
+
951
+ Credential ID JZ9TBHXJFLWM
952
+
953
+ See credential
954
+
955
+ - Advanced Machine Learning with TensorFlow on Google Cloud Platform Specialization
956
+
957
+ Google
958
+
959
+ Issued Jul 2020
960
+
961
+ Credential ID V492QQ4JJKEB
962
+
963
+ See credential
964
+
965
+ - End-to-End Machine Learning with TensorFlow on GCP
966
+
967
+ Google
968
+
969
+ Issued Jul 2020
970
+
971
+ Credential ID QLDMNADDBSRR
972
+
973
+ See credential
974
+
975
+ - Image Understanding with TensorFlow on GCP
976
+
977
+ Google
978
+
979
+ Issued Jul 2020
980
+
981
+ Credential ID HY4HSSY8JSPN
982
+
983
+ See credential
984
+
985
+ - Production Machine Learning Systems
986
+
987
+ Google
988
+
989
+ Issued Jul 2020
990
+
991
+ Credential ID THZZNW22LHKT
992
+
993
+ See credential
994
+
995
+ - Recommendation Systems with TensorFlow on GCP
996
+
997
+ Google
998
+
999
+ Issued Jul 2020
1000
+
1001
+ Credential ID 2D4LT28697TC
1002
+
1003
+ See credential
1004
+
1005
+ - Sequence Models for Time Series and Natural Language Processing
1006
+
1007
+ Google
1008
+
1009
+ Issued Jul 2020
1010
+
1011
+ Credential ID 6XUV7YJFM3ZA
1012
+
1013
+ See credential
1014
+
1015
+ - Building Batch Data Pipelines on GCP
1016
+
1017
+ Google
1018
+
1019
+ Issued May 2020
1020
+
1021
+ Credential ID 5QYSK9E5EAFN
1022
+
1023
+ See credential
1024
+
1025
+ - Building Resilient Streaming Analytics Systems on GCP
1026
+
1027
+ Google
1028
+
1029
+ Issued May 2020
1030
+
1031
+ Credential ID FYQW7D4F6PD4
1032
+
1033
+ See credential
1034
+
1035
+ - Data Engineering with Google Cloud Specialization
1036
+
1037
+ Google
1038
+
1039
+ Issued May 2020
1040
+
1041
+ Credential ID EPZ3WQFC423E
1042
+
1043
+ See credential
1044
+
1045
+ - Modernizing Data Lakes and Data Warehouses with GCP
1046
+
1047
+ Google
1048
+
1049
+ Issued May 2020
1050
+
1051
+ Credential ID 393P3HLZWY8H
1052
+
1053
+ See credential
1054
+
1055
+ - Smart Analytics, Machine Learning, and AI on GCP
1056
+
1057
+ Google
1058
+
1059
+ Issued May 2020
1060
+
1061
+ Credential ID AK77VUVN4ARJ
1062
+
1063
+ See credential
1064
+
1065
+ - Google Cloud Platform Big Data and Machine Learning Fundamentals
1066
+
1067
+ Google
1068
+
1069
+ Issued Apr 2020
1070
+
1071
+ Credential ID 2Q35NYHYMW5E
1072
+
1073
+ See credential
1074
+
1075
+ - Devenez Mentor Evaluateur
1076
+
1077
+ OpenClassrooms
1078
+
1079
+ Issued Feb 2019
1080
+
1081
+ Credential ID 8151214336
1082
+
1083
+ See credential
1084
+
1085
+ - Advanced AI: Deep Reinforcement Learning in Python
1086
+
1087
+ Udemy
1088
+
1089
+ Issued Aug 2018
1090
+
1091
+ Credential ID UC-5FM0CC9S
1092
+
1093
+ See credential
1094
+
1095
+ - Artificial Intelligence: Reinforcement Learning in Python
1096
+
1097
+ Udemy
1098
+
1099
+ Issued Jul 2018
1100
+
1101
+ Credential ID UC-XALJEH7G
1102
+
1103
+ See credential
1104
+
1105
+ - Concevez un site avec Flask
1106
+
1107
+ OpenClassrooms
1108
+
1109
+ Issued Jul 2018
1110
+
1111
+ Credential ID 5343531703
1112
+
1113
+ See credential
1114
+
1115
+ - Les étapes de la vie du Mentor
1116
+
1117
+ OpenClassrooms
1118
+
1119
+ Issued Jul 2018
1120
+
1121
+ Credential ID 8431716200
1122
+
1123
+ See credential
1124
+
1125
+ - Devenez Mentor chez OpenClassrooms
1126
+
1127
+ OpenClassrooms
1128
+
1129
+ Issued May 2018
1130
+
1131
+ Credential ID 6193593386
1132
+
1133
+ See credential
1134
+
1135
+ - Complete Guide to ElasticSearch
1136
+
1137
+ Udemy
1138
+
1139
+ Issued Mar 2018
1140
+
1141
+ Credential ID UC-H5AJQVA3
1142
+
1143
+ See credential
1144
+
1145
+ - Introduction to Hadoop
1146
+
1147
+ The Linux Foundation
1148
+
1149
+ Issued Oct 2017
1150
+
1151
+ Credential ID ad676a8fe7994edea33516b80b540971
1152
+
1153
+ See credential
1154
+
1155
+ - Artificial Intelligence Nanodegree
1156
+
1157
+ Udacity
1158
+
1159
+ Issued Sep 2017
1160
+
1161
+ Credential ID PV7A7EAA
1162
+
1163
+ See credential
1164
+
1165
+ - High Performance Computing
1166
+
1167
+ University of Luxembourg
1168
+
1169
+ Issued Feb 2017
1170
+
1171
+ See credential
1172
+
1173
+ - Machine Learning
1174
+
1175
+ Standford University
1176
+
1177
+ Issued Sep 2015
1178
+
1179
+ Credential ID Grade: 97%
1180
+
1181
+ See credential
1182
+
1183
+ - TOEIC
1184
+
1185
+ Listening, Reading
1186
+
1187
+ Issued Jan 2014
1188
+
1189
+ Credential ID Score: 975/990
1190
+
1191
+ Publications
1192
+
1193
+ - Is AI/ML Monitoring just Data Engineering? 🤔
1194
+
1195
+ MLOps Community July 24, 2023
1196
+
1197
+ While the future of machine learning and MLOps is being debated,
1198
+ practitioners still need to attend to their machine learning models
1199
+ in production. This is no easy task, as ML engineers must constantly
1200
+ assess the quality of the data that enters and exits their
1201
+ pipelines, and ensure that their models generate the correct
1202
+ predictions. To assist ML engineers with this challenge, several
1203
+ AI/ML monitoring solutions have been developed.
1204
+ In this article, I will discuss the nature of AI/ML… Show more
1205
+
1206
+ While the future of machine learning and MLOps is being debated,
1207
+ practitioners still need to attend to their machine learning models
1208
+ in production. This is no easy task, as ML engineers must constantly
1209
+ assess the quality of the data that enters and exits their
1210
+ pipelines, and ensure that their models generate the correct
1211
+ predictions. To assist ML engineers with this challenge, several
1212
+ AI/ML monitoring solutions have been developed.
1213
+ In this article, I will discuss the nature of AI/ML monitoring and
1214
+ how it relates to data engineering. First, I will present the
1215
+ similarities between AI/ML monitoring and data engineering. Second,
1216
+ I will enumerate additional features that AI/ML monitoring solutions
1217
+ can provide. Third, I will briefly touch on the topic of AI/ML
1218
+ observability and its relation to AI/ML monitoring. Finally, I will
1219
+ provide my conclusion about the field of AI/ML monitoring and how it
1220
+ should be considered to ensure the success of your AI/ML project.
1221
+ Show less
1222
+
1223
+ See publication
1224
+
1225
+ - A great MLOps project should start with a good Python Package 🐍
1226
+
1227
+ MLOps Community June 28, 2023
1228
+
1229
+ In this article, I present the implementation of a Python package on
1230
+ GitHub designed to support MLOps initiatives. The goal of this
1231
+ package is to make the coding workflow of data scientists and ML
1232
+ engineers as flexible, robust, and productive as possible. First, I
1233
+ start by motivating the use of Python packages. Then, I provide some
1234
+ tools and tips you can include in your MLOps project. Finally, I
1235
+ explain the follow-up steps required to take this package to the
1236
+ next level and make it work in your… Show more
1237
+
1238
+ In this article, I present the implementation of a Python package on
1239
+ GitHub designed to support MLOps initiatives. The goal of this
1240
+ package is to make the coding workflow of data scientists and ML
1241
+ engineers as flexible, robust, and productive as possible. First, I
1242
+ start by motivating the use of Python packages. Then, I provide some
1243
+ tools and tips you can include in your MLOps project. Finally, I
1244
+ explain the follow-up steps required to take this package to the
1245
+ next level and make it work in your environment. Show less
1246
+
1247
+ See publication
1248
+
1249
+ - Fixing the MLOps Survey on LLMs with ChatGPT API: Lessons Learned
1250
+
1251
+ MLOps Community May 11, 2023
1252
+
1253
+ Large Language Model (LLM) is such an existing topic. Since the
1254
+ release of ChatGPT, we saw a surge of innovation ranging from
1255
+ education mentorship to finance advisory. Each week is a new
1256
+ opportunity for addressing new kinds of problems, increasing human
1257
+ productivity, or improving existing solutions. Yet, we may wonder if
1258
+ this is just a new hype cycle or if organizations are truly adopting
1259
+ LLMs at scale …
1260
+ On March 2023, the MLOps Community issued a survey about LLMs in
1261
+ production to… Show more
1262
+
1263
+ Large Language Model (LLM) is such an existing topic. Since the
1264
+ release of ChatGPT, we saw a surge of innovation ranging from
1265
+ education mentorship to finance advisory. Each week is a new
1266
+ opportunity for addressing new kinds of problems, increasing human
1267
+ productivity, or improving existing solutions. Yet, we may wonder if
1268
+ this is just a new hype cycle or if organizations are truly adopting
1269
+ LLMs at scale …
1270
+ On March 2023, the MLOps Community issued a survey about LLMs in
1271
+ production to picture the state of adoption. The survey is full of
1272
+ interesting insights, but there is a catch: 80% of the questions are
1273
+ open-ended, which means respondents answered the survey freely from
1274
+ a few keywords to full sentences. I volunteered to clean up the
1275
+ answers with the help of ChatGPT and let the community get a grasp
1276
+ of the survey experiences.
1277
+ In this article, I present the steps and lessons learned from my
1278
+ journey to shed some light on the MLOps survey on LLMs. I’m first
1279
+ going to present the goal and questions of the survey. Then, I will
1280
+ explain how I used ChatGPT to review the data and standardize the
1281
+ content. Finally, I’m going to evaluate the performance of ChatGPT
1282
+ compared to a manual review. Show less
1283
+
1284
+ See publication
1285
+
1286
+ - Kubeflow: The Machine Learning Toolkit for Kubernetes
1287
+
1288
+ MLOps Community in Luxembourg April 26, 2023
1289
+
1290
+ See publication
1291
+
1292
+ - MLflow: An open source platform for the machine learning lifecycle
1293
+
1294
+ MLOps Community in Luxembourg April 26, 2023
1295
+
1296
+ See publication
1297
+
1298
+ - We need POSIX for MLOps
1299
+
1300
+ MLOps Community April 21, 2023
1301
+
1302
+ If you work on MLOps, you must navigate an ever-growing landscape of
1303
+ tools and solutions. This is both an intense source of stimulation
1304
+ and fatigue for MLOps practitioners.
1305
+ Vendors and users face the same problem: How can we combine all
1306
+ these tools without the combinatorial complexity of creating custom
1307
+ integrations?
1308
+ In this article, I propose a solution analogous to POSIX to address
1309
+ this challenge. First, I motivate the creation of common protocols
1310
+ and schemas for combining MLOps… Show more
1311
+
1312
+ If you work on MLOps, you must navigate an ever-growing landscape of
1313
+ tools and solutions. This is both an intense source of stimulation
1314
+ and fatigue for MLOps practitioners.
1315
+ Vendors and users face the same problem: How can we combine all
1316
+ these tools without the combinatorial complexity of creating custom
1317
+ integrations?
1318
+ In this article, I propose a solution analogous to POSIX to address
1319
+ this challenge. First, I motivate the creation of common protocols
1320
+ and schemas for combining MLOps tools. Second, I present a
1321
+ high-level architecture to support implementation. Third, I conclude
1322
+ with the benefits and limitations of standardizing MLOps. Show less
1323
+
1324
+ See publication
1325
+
1326
+ - How to install Kubeflow Pipelines v2 on Apple Silicon
1327
+
1328
+ Medium September 24, 2022
1329
+
1330
+ Kubeflow Pipelines (KFP) is a powerful platform for building machine
1331
+ learning pipelines at scale with Kubernetes. The platform is well
1332
+ supported on major cloud platforms such as GCP (Vertex AI Pipelines)
1333
+ or AWS (Kubeflow on AWS). However, installing KFP on Apple Silicon
1334
+ (macOS 12.5.1 with Apple M1 Pro) proved to be more challenging than
1335
+ I imagined. Thus, I wanted to share my experience and tips to
1336
+ install KFP as easily as possible on your shiny Mac.
1337
+ In this article, I present 4 steps to… Show more
1338
+
1339
+ Kubeflow Pipelines (KFP) is a powerful platform for building machine
1340
+ learning pipelines at scale with Kubernetes. The platform is well
1341
+ supported on major cloud platforms such as GCP (Vertex AI Pipelines)
1342
+ or AWS (Kubeflow on AWS). However, installing KFP on Apple Silicon
1343
+ (macOS 12.5.1 with Apple M1 Pro) proved to be more challenging than
1344
+ I imagined. Thus, I wanted to share my experience and tips to
1345
+ install KFP as easily as possible on your shiny Mac.
1346
+ In this article, I present 4 steps to install Kubeflow on Apple
1347
+ Silicon, using Rancher Desktop for setting up Docker/Kubernetes. In
1348
+ the end, I list the problems I encountered during the installation
1349
+ of Kubeflow Pipelines. Show less
1350
+
1351
+ See publication
1352
+
1353
+ - The Programming Trade-Off: Purpose, Productivity, Performance
1354
+
1355
+ Medium August 15, 2019
1356
+
1357
+ As programmers, we are continuously looking for languages that are
1358
+ performant, productive, and general purpose. Is there any
1359
+ programming language that currently satisfies these properties? Can
1360
+ we ever create one?
1361
+ In this article, I present a fundamental trade-off that affects the
1362
+ design of programming languages and the success of software
1363
+ projects.
1364
+
1365
+ See publication
1366
+
1367
+ - Creating better ground truth to further understand Android malware: A large scale mining approach based on antivirus labels and malicious artifacts
1368
+
1369
+ University of Luxembourg July 1, 2019
1370
+
1371
+ Mobile applications are essential for interacting with technology
1372
+ and other people. With more than 2 billion devices deployed all over
1373
+ the world, Android offers a thriving ecosystem by making accessible
1374
+ the work of thousands of developers on digital marketplaces such as
1375
+ Google Play. Nevertheless, the success of Android also exposes
1376
+ millions of users to malware authors who seek to siphon private
1377
+ information and hijack mobile devices for their benefits.
1378
+ To fight against the proliferation… Show more
1379
+
1380
+ Mobile applications are essential for interacting with technology
1381
+ and other people. With more than 2 billion devices deployed all over
1382
+ the world, Android offers a thriving ecosystem by making accessible
1383
+ the work of thousands of developers on digital marketplaces such as
1384
+ Google Play. Nevertheless, the success of Android also exposes
1385
+ millions of users to malware authors who seek to siphon private
1386
+ information and hijack mobile devices for their benefits.
1387
+ To fight against the proliferation of Android malware, the security
1388
+ community embraced machine learning, a branch of artificial
1389
+ intelligence that powers a new generation of detection systems.
1390
+ Machine learning algorithms, however, require a substantial number
1391
+ of qualified samples to learn the classification rules enforced by
1392
+ security experts. Unfortunately, malware ground truths are
1393
+ notoriously hard to construct due to the inherent complexity of
1394
+ Android applications and the global lack of public information about
1395
+ malware. In a context where both information and human resources are
1396
+ limited, the security community is in demand for new approaches to
1397
+ aid practitioners to accurately define Android malware, automate
1398
+ classification decisions, and improve the comprehension of Android
1399
+ malware.
1400
+ This dissertation proposes three solutions to assist with the
1401
+ creation of malware ground truths. Show less
1402
+
1403
+ See publication
1404
+
1405
+ - Euphony: Harmonious Unification of Cacophonous Anti-Virus Vendor Labels for Android Malware
1406
+
1407
+ MSR 2017 May 21, 2017
1408
+
1409
+ Android malware is now pervasive and evolving rapidly. Thousands of
1410
+ malware samples are discovered every day with new models of attacks.
1411
+ The growth of these threats has come hand in hand with the
1412
+ proliferation of collective repositories sharing the latest
1413
+ specimens. Having access to a large number of samples opens new
1414
+ research directions aiming at efficiently vetting apps. However,
1415
+ automatically inferring a reference ground-truth from those
1416
+ repositories is not straightforward and can… Show more
1417
+
1418
+ Android malware is now pervasive and evolving rapidly. Thousands of
1419
+ malware samples are discovered every day with new models of attacks.
1420
+ The growth of these threats has come hand in hand with the
1421
+ proliferation of collective repositories sharing the latest
1422
+ specimens. Having access to a large number of samples opens new
1423
+ research directions aiming at efficiently vetting apps. However,
1424
+ automatically inferring a reference ground-truth from those
1425
+ repositories is not straightforward and can inadvertently lead to
1426
+ unforeseen misconceptions. On the one hand, samples are often
1427
+ mislabeled as different parties use distinct naming schemes for the
1428
+ same sample. On the other hand, samples are frequently misclassified
1429
+ due to conceptual errors made during labeling processes.
1430
+ In this paper, we analyze the associations between all labels given
1431
+ by different vendors and we propose a system called EUPHONY to
1432
+ systematically unify common samples into family groups. The key
1433
+ novelty of our approach is that no prior knowledge of malware
1434
+ families is needed. We evaluate our approach using reference
1435
+ datasets and more than 0.4 million additional samples outside of
1436
+ these datasets. Results show that EUPHONY provides competitive
1437
+ performance against the state-of-the-art. Show less
1438
+
1439
+ See publication
1440
+
1441
+ - On the Lack of Consensus in Anti-Virus Decisions: Metrics and Insights on Building Ground Truths of Android Malware
1442
+
1443
+ DIMVA 2016 July 7, 2016
1444
+
1445
+ There is generally a lack of consensus in Antivirus (AV) engines'
1446
+ decisions on a given sample. This challenges the building of
1447
+ authoritative ground-truth datasets. Instead, researchers and
1448
+ practitioners may rely on unvalidated approaches to build their
1449
+ ground truth, e.g., by considering decisions from a selected set of
1450
+ Antivirus vendors or by setting up a threshold number of positive
1451
+ detections before classifying a sample. Both approaches are biased
1452
+ as they implicitly either decide on ranking… Show more
1453
+
1454
+ There is generally a lack of consensus in Antivirus (AV) engines'
1455
+ decisions on a given sample. This challenges the building of
1456
+ authoritative ground-truth datasets. Instead, researchers and
1457
+ practitioners may rely on unvalidated approaches to build their
1458
+ ground truth, e.g., by considering decisions from a selected set of
1459
+ Antivirus vendors or by setting up a threshold number of positive
1460
+ detections before classifying a sample. Both approaches are biased
1461
+ as they implicitly either decide on ranking AV products, or they
1462
+ consider that all AV decisions have equal weights. In this paper, we
1463
+ extensively investigate the lack of agreement among AV engines.
1464
+ To that end, we propose a set of metrics that quantitatively
1465
+ describe the different dimensions of this lack of consensus. We show
1466
+ how our metrics can bring important insights by using the detection
1467
+ results of 66 AV products on 2 million Android apps as a case study.
1468
+ Our analysis focuses not only on AV binary decision but also on the
1469
+ notoriously hard problem of labels that AVs associate with
1470
+ suspicious files, and allows to highlight biases hidden in the
1471
+ collection of a malware ground truth---a foundation stone of any
1472
+ machine learning-based malware detection approach. Show less
1473
+
1474
+ See publication
1475
+
1476
+ Courses
1477
+
1478
+ - Artificial Intelligence
1479
+
1480
+ https://www.edx.org
1481
+
1482
+ - Data Science at Scale
1483
+
1484
+ https://www.coursera.org/
1485
+
1486
+ - Descriptive Statistics
1487
+
1488
+ https://www.edx.org/
1489
+
1490
+ - Developing Android Apps
1491
+
1492
+ https://eu.udacity.com/
1493
+
1494
+ - Full Stack Foundations
1495
+
1496
+ https://www.udacity.com/
1497
+
1498
+ - Functional Programming
1499
+
1500
+ https://www.edx.org/
1501
+
1502
+ - Introduction to Logic
1503
+
1504
+ https://www.coursera.org/
1505
+
1506
+ - Knowledge-Based AI: Cognitive Systems
1507
+
1508
+ https://eu.udacity.com/
1509
+
1510
+ - Machine Learning
1511
+
1512
+ https://www.coursera.org/
1513
+
1514
+ - Mathematics for Computer Science
1515
+
1516
+ https://ocw.mit.edu/
1517
+
1518
+ - Nanodegree Program: Artificial Intelligence
1519
+
1520
+ https://eu.udacity.com/
1521
+
1522
+ - Paradigms of Computer Programming
1523
+
1524
+ https://www.edx.org
1525
+
1526
+ - Statistics Inference
1527
+
1528
+ https://www.edx.org/
1529
+
1530
+ - Statistics Probability
1531
+
1532
+ https://www.edx.org/
1533
+
1534
+ - ChatGPT Prompt Engineering for Developers
1535
+
1536
+ Deeplearning.ai
1537
+
1538
+ - Introduction to Data-Centric AI
1539
+
1540
+ -
1541
+
1542
+ - LangChain for LLM Application Development - DeepLearning.ai
1543
+
1544
+ -
1545
+
1546
+ - LangChain: Chat with Your Data - DeepLearning.ai
1547
+
1548
+ -
1549
+
1550
+ - Hugging Face Course
1551
+
1552
+ huggingface.co/course/
1553
+
1554
+ Projects
1555
+
1556
+ - MLOps Python Package
1557
+
1558
+ Jun 2023 - Jun 2023
1559
+
1560
+ Kickstart your MLOps initiative with a flexible, robust, and
1561
+ productive Python package.
1562
+ https://github.com/fmind/mlops-python-package
1563
+
1564
+ - Fixing the MLOps Survey with ChatGPT
1565
+
1566
+ May 2023 - May 2023
1567
+
1568
+ Fixing the MLOps Survey on LLMs with ChatGPT API.
1569
+ https://fmind.medium.com/fixing-the-mlops-survey-on-llms-with-chatgpt-api-lessons-learned-62d90e721331
1570
+
1571
+ See project
1572
+
1573
+ - Kubeflow Demo
1574
+
1575
+ Apr 2023 - Apr 2023
1576
+
1577
+ Kubeflow demo for the MLOps Community Meetup in Luxembourg.
1578
+
1579
+ See project
1580
+
1581
+ - MLflow Demo
1582
+
1583
+ Apr 2023 - Apr 2023
1584
+
1585
+ MLflow demo for the MLOps Community Meetup in Luxembourg.
1586
+
1587
+ See project
1588
+
1589
+ - onet
1590
+
1591
+ Aug 2020 - Sep 2020
1592
+
1593
+ Train and predict procedures of DNN for binary image classification
1594
+
1595
+ See project
1596
+
1597
+ - fincrawl
1598
+
1599
+ Nov 2019 - Dec 2019
1600
+
1601
+ Crawl documents, metadata, and files from financial institutions
1602
+
1603
+ See project
1604
+
1605
+ - invest
1606
+
1607
+ Aug 2019 - Sep 2019
1608
+
1609
+ Stock market analysis focused on dividends
1610
+
1611
+ See project
1612
+
1613
+ - parsoc
1614
+
1615
+ Jul 2019 - Sep 2019
1616
+
1617
+ Convert docx files to json
1618
+
1619
+ See project
1620
+
1621
+ - Bigdata Tutorials
1622
+
1623
+ Sep 2015 - Jul 2019
1624
+
1625
+ Tutorials for the Big Data course @ uni.lu
1626
+
1627
+ See project
1628
+
1629
+ - STASE: A set of statistical metrics to better understand and qualify malware datasets
1630
+
1631
+ Apr 2016 - Jul 2019
1632
+
1633
+ A handful of statistical metrics to better understand and qualify
1634
+ malware datasets
1635
+
1636
+ See project
1637
+
1638
+ - apkworkers
1639
+
1640
+ Sep 2015 - Jul 2019
1641
+
1642
+ A celery application to distribute Android malware analysis
1643
+
1644
+ See project
1645
+
1646
+ - servalx
1647
+
1648
+ Sep 2015 - Jul 2019
1649
+
1650
+ A set of tools and modules to process Android malware with Androzoo
1651
+
1652
+ See project
1653
+
1654
+ - Euphony: Harmonious Unification of Cacophonous Anti-Virus Vendor Labels for Android Malware
1655
+
1656
+ Mar 2017 - Mar 2019
1657
+
1658
+ Harmonious Unification of Cacophonous Anti-Virus Vendor Labels for
1659
+ Android Malware
1660
+
1661
+ See project
1662
+
1663
+ - Automatic Speech Recognition with Tensorflow
1664
+
1665
+ Sep 2017 - Sep 2017
1666
+
1667
+ An automatic speech-recognition system based on Tensorflow
1668
+
1669
+ See project
1670
+
1671
+ - Dog Recognition with Tensorflow
1672
+
1673
+ Aug 2017 - Aug 2017
1674
+
1675
+ A machine-learning model train to recognize dogs, even from human
1676
+ faces
1677
+
1678
+ See project
1679
+
1680
+ - genius
1681
+
1682
+ Jun 2017 - Jul 2017
1683
+
1684
+ An implementation of LISP Scheme based on Haskell
1685
+
1686
+ See project
1687
+
1688
+ - Alexa History Skill
1689
+
1690
+ Jun 2017 - Jun 2017
1691
+
1692
+ A Alexa skill that provides year-dated facts on demand
1693
+
1694
+ See project
1695
+
1696
+ - Air Cargo Planning System
1697
+
1698
+ Feb 2017 - Apr 2017
1699
+
1700
+ An automated Air Cargo transport system based on AI planning
1701
+
1702
+ See project
1703
+
1704
+ - Sign Language Recognition System
1705
+
1706
+ Feb 2017 - Apr 2017
1707
+
1708
+ A sign recognition system based on Hidden Markov Model
1709
+
1710
+ See project
1711
+
1712
+ - AI Agent for the Isolation Game
1713
+
1714
+ Mar 2017 - Mar 2017
1715
+
1716
+ An AI game agent to play the Isolation game
1717
+
1718
+ See project
1719
+
1720
+ - Sudoku Solver
1721
+
1722
+ Jan 2017 - Feb 2017
1723
+
1724
+ A Diagonal Sudoku solver implemented with Python
1725
+
1726
+ See project
1727
+
1728
+ - lkml
1729
+
1730
+ Nov 2016 - Jan 2017
1731
+
1732
+ Gather emails from https://lkml.org/
1733
+
1734
+ See project
1735
+
1736
+ - Master 2 School Projects
1737
+
1738
+ Sep 2013 - Jun 2014
1739
+
1740
+ School projects from 2013 to 2014 - Master 2 Sécurité des Systèmes
1741
+ d'Information (Metz)
1742
+
1743
+ See project
1744
+
1745
+ - chattail
1746
+
1747
+ Dec 2013 - Mar 2014
1748
+
1749
+ Send log streams over XMPP to monitor your systems
1750
+
1751
+ See project
1752
+
1753
+ - Master 1 School Projects
1754
+
1755
+ Jun 2012 - Sep 2013
1756
+
1757
+ See project
1758
+
1759
+ - Bachelor School Projects
1760
+
1761
+ Jun 2011 - Sep 2012
1762
+
1763
+ See project
1764
+
1765
+ - Professional Bachelor School Project
1766
+
1767
+ Sep 2009 - Jun 2010
1768
+
1769
+ See project
1770
+
1771
+ - https://github.com/fmind/mlops-python-package
1772
+
1773
+ -
1774
+
1775
+ Kickstart your MLOps initiative with a flexible, robust, and
1776
+ productive Python package.
1777
+
1778
+ Languages
1779
+
1780
+ - Français
1781
+
1782
+ Native or bilingual proficiency
1783
+
1784
+ - Anglais
1785
+
1786
+ Full professional proficiency
1787
+
1788
+ View Médéric’s full profile
1789
+
1790
+ -
1791
+
1792
+ See who you know in common
1793
+
1794
+ -
1795
+
1796
+ Get introduced
1797
+
1798
+ -
1799
+
1800
+ Contact Médéric directly
1801
+
1802
+ Sign in to view full profile
1803
+
1804
+ Sign in to view Médéric’s full profile
1805
+
1806
+ Sign in
1807
+
1808
+ Welcome back
1809
+
1810
+ Email or phone
1811
+
1812
+ Password
1813
+
1814
+ Show
1815
+
1816
+ Forgot password?
1817
+
1818
+ Sign in
1819
+
1820
+ or
1821
+
1822
+ By clicking Continue, you agree to LinkedIn’s User Agreement, Privacy
1823
+ Policy, and Cookie Policy.
1824
+
1825
+ New to LinkedIn? Join now
1826
+
1827
+ or
1828
+
1829
+ By clicking Continue, you agree to LinkedIn’s User Agreement, Privacy
1830
+ Policy, and Cookie Policy.
1831
+
1832
+ New to LinkedIn? Join now
1833
+
1834
+ Explore collaborative articles
1835
+
1836
+ We’re unlocking community knowledge in a new way. Experts add insights
1837
+ directly into each article, started with the help of AI.
1838
+
1839
+ Explore More
1840
+
1841
+ Médéric’s public profile badge
1842
+
1843
+ Include this LinkedIn profile on other websites
1844
+
1845
+ Médéric HURIER
1846
+
1847
+ Freelancer: AI/ML/MLOps Engineer | Data Scientist | MLOps Community
1848
+ Organizer | OpenClassrooms Mentor | Hacker | PhD
1849
+
1850
+ - Lead MLOps Engineer at Decathlon Technology
1851
+
1852
+ - University of Luxembourg
1853
+
1854
+ View profile
1855
+
1856
+ View profile badges
1857
+
1858
+ - LinkedIn © 2023
1859
+
1860
+ - About
1861
+
1862
+ - Accessibility
1863
+
1864
+ - User Agreement
1865
+
1866
+ - Privacy Policy
1867
+
1868
+ - Cookie Policy
1869
+
1870
+ - Copyright Policy
1871
+
1872
+ - Brand Policy
1873
+
1874
+ - Guest Controls
1875
+
1876
+ - Community Guidelines
1877
+
1878
+ - - العربية (Arabic)
1879
+ - Čeština (Czech)
1880
+ - Dansk (Danish)
1881
+ - Deutsch (German)
1882
+ - English (English)
1883
+ - Español (Spanish)
1884
+ - Français (French)
1885
+ - हिंदी (Hindi)
1886
+ - Bahasa Indonesia (Indonesian)
1887
+ - Italiano (Italian)
1888
+ - 日本語 (Japanese)
1889
+ - 한국어 (Korean)
1890
+ - Bahasa Malaysia (Malay)
1891
+ - Nederlands (Dutch)
1892
+ - Norsk (Norwegian)
1893
+ - Polski (Polish)
1894
+ - Português (Portuguese)
1895
+ - Română (Romanian)
1896
+ - Русский (Russian)
1897
+ - Svenska (Swedish)
1898
+ - ภาษาไทย (Thai)
1899
+ - Tagalog (Tagalog)
1900
+ - Türkçe (Turkish)
1901
+ - Українська (Ukrainian)
1902
+ - 简体中文 (Chinese (Simplified))
1903
+ - 正體中文 (Chinese (Traditional))
1904
+
1905
+ Language
1906
+
1907
+ Sign in to view Médéric’s full profile
1908
+
1909
+ Sign in
1910
+
1911
+ Welcome back
1912
+
1913
+ Email or phone
1914
+
1915
+ Password
1916
+
1917
+ Show
1918
+
1919
+ Forgot password?
1920
+
1921
+ Sign in
1922
+
1923
+ or
1924
+
1925
+ By clicking Continue, you agree to LinkedIn’s User Agreement, Privacy
1926
+ Policy, and Cookie Policy.
1927
+
1928
+ New to LinkedIn? Join now
1929
+
1930
+ or
1931
+
1932
+ By clicking Continue, you agree to LinkedIn’s User Agreement, Privacy
1933
+ Policy, and Cookie Policy.
1934
+
1935
+ New to LinkedIn? Join now
1936
+
1937
+ []
invoke.yaml ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # https://docs.pyinvoke.org/en/latest/index.html
2
+
3
+ run:
4
+ echo: true
5
+ app:
6
+ path: "app.py"
7
+ database:
8
+ path: "database"
9
+ linkedin:
10
+ html: "files/linkedin.html"
11
+ markdown: "files/linkedin.md"
12
+ text: "files/linkedin.txt"
13
+ mypy:
14
+ cache: ".mypy_cache/"
15
+ pip:
16
+ requirements: "requirements.txt"
17
+ requirements_dev: "requirements-dev.txt"
18
+ python:
19
+ files: "tasks/ *.py"
20
+ path: "python3"
21
+ venv:
22
+ path: ".venv/"
23
+ python: ".venv/bin/python"
lib.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Library of the project."""
2
+ # pylint: disable=wrong-import-position
3
+
4
+ # %% IMPORTS
5
+
6
+ __import__("pysqlite3")
7
+
8
+ import os
9
+ import sys
10
+
11
+ # https://docs.trychroma.com/troubleshooting#sqlite
12
+ sys.modules["sqlite3"] = sys.modules.pop("pysqlite3")
13
+
14
+ import chromadb
15
+ from chromadb.utils import embedding_functions
16
+
17
+ # %% TYPINGS
18
+
19
+ Collection = chromadb.Collection
20
+
21
+ # %% CONFIGS
22
+
23
+ DATABASE_COLLECTION = "resume"
24
+ OPENAI_API_KEY = os.environ["OPENAI_API_KEY"]
25
+
26
+ # %% FUNCTIONS
27
+
28
+
29
+ def get_database_client(path: str) -> chromadb.API:
30
+ """Get a persistent client to the Chroma DB."""
31
+ settings = chromadb.Settings(
32
+ allow_reset=True,
33
+ anonymized_telemetry=False,
34
+ )
35
+ return chromadb.PersistentClient(path=path, settings=settings)
36
+
37
+
38
+ def get_embedding_function(
39
+ model_name: str = "text-embedding-ada-002", api_key: str = OPENAI_API_KEY
40
+ ) -> embedding_functions.EmbeddingFunction:
41
+ """Get the embedding function for Chroma DB collections."""
42
+ return embedding_functions.OpenAIEmbeddingFunction(
43
+ model_name=model_name,
44
+ api_key=api_key,
45
+ )
packages.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ # https://huggingface.co/docs/hub/spaces-dependencies
pyproject.toml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # https://pip.pypa.io/en/stable/reference/build-system/pyproject-toml/
2
+
3
+ # https://black.readthedocs.io/en/stable/usage_and_configuration/the_basics.html
4
+ [tool.black]
5
+
6
+ # https://pycqa.github.io/isort/docs/configuration/options.html
7
+ [tool.isort]
8
+ profile = "black"
9
+
10
+ # https://mypy.readthedocs.io/en/stable/config_file.html
11
+ [tool.mypy]
12
+ plugins = ["pydantic.mypy"]
13
+ ignore_missing_imports = true
14
+
15
+ # https://pylint.pycqa.org/en/latest/user_guide/configuration/index.html
16
+ [tool.pylint]
17
+ disable = []
requirements-dev.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ # https://pip.pypa.io/en/stable/reference/requirements-file-format/
2
+
3
+ black
4
+ invoke
5
+ ipykernel
6
+ isort
7
+ mypy
8
+ pylint
requirements.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ # https://pip.pypa.io/en/stable/reference/requirements-file-format/
2
+
3
+ chromadb==0.4.13
4
+ gradio==3.47.1
5
+ openai==0.28.1
6
+ pysqlite3-binary==0.5.1
7
+ tiktoken==0.5.1
8
+
resume.code-workspace ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // https://code.visualstudio.com/docs/getstarted/settings
2
+ {
3
+ "folders": [
4
+ {
5
+ "path": "."
6
+ }
7
+ ],
8
+ "settings": {
9
+ "editor.formatOnSave": true,
10
+ "python.defaultInterpreterPath": ".venv/bin/python3",
11
+ "[python]": {
12
+ "editor.codeActionsOnSave": {
13
+ "source.organizeImports": true
14
+ },
15
+ "editor.defaultFormatter": "ms-python.black-formatter"
16
+ },
17
+ },
18
+ "extensions": {
19
+ "recommendations": [
20
+ "dchanco.vsc-invoke",
21
+ "ms-python.black-formatter",
22
+ "ms-python.isort",
23
+ "ms-python.pylint",
24
+ "ms-python.python",
25
+ "ms-python.vscode-pylance",
26
+ "ms-python.mypy-type-checker",
27
+ ]
28
+ }
29
+ }
tasks/__init__.py ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Task collections for the project."""
2
+ # pylint: disable=redefined-builtin
3
+ # mypy: ignore-errors
4
+
5
+ # %% IMPORTS
6
+
7
+ from invoke import Collection
8
+
9
+ from . import check, clean, convert, format, install, run
10
+
11
+ # %% NAMESPACES
12
+
13
+ ns = Collection()
14
+
15
+ # %% COLLECTIONS
16
+
17
+ ns.add_collection(run, default=True)
18
+ ns.add_collection(check)
19
+ ns.add_collection(clean)
20
+ ns.add_collection(convert)
21
+ ns.add_collection(format)
22
+ ns.add_collection(install)
tasks/check.py ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Check tasks for the project."""
2
+ # pylint: disable=redefined-builtin
3
+
4
+ # %% IMPORTS
5
+
6
+ from invoke import task
7
+ from invoke.context import Context
8
+
9
+ # %% TASKS
10
+
11
+
12
+ @task
13
+ def type(ctx: Context) -> None:
14
+ """Check the types with mypy."""
15
+ ctx.run(f"{ctx.venv.python} -m mypy {ctx.python.files}")
16
+
17
+
18
+ @task
19
+ def code(ctx: Context) -> None:
20
+ """Check the codes with pylint."""
21
+ ctx.run(f"{ctx.venv.python} -m pylint {ctx.python.files}")
22
+
23
+
24
+ @task
25
+ def format(ctx: Context) -> None:
26
+ """Check the formats with isort and black."""
27
+ ctx.run(f"{ctx.venv.python} -m isort --check {ctx.python.files}")
28
+ ctx.run(f"{ctx.venv.python} -m black --check --quiet {ctx.python.files}")
29
+
30
+
31
+ @task(pre=[type, code, format], default=True)
32
+ def all(_: Context) -> None:
33
+ """Run all check tasks."""
tasks/clean.py ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Clean tasks for the project."""
2
+ # pylint: disable=redefined-builtin
3
+
4
+ # %% IMPORTS
5
+
6
+ from invoke import task
7
+ from invoke.context import Context
8
+
9
+ # %% TASKS
10
+
11
+
12
+ @task
13
+ def install(ctx: Context) -> None:
14
+ """Clean the install."""
15
+ ctx.run(f"rm -rf {ctx.venv.path}")
16
+
17
+
18
+ @task
19
+ def mypy(ctx: Context) -> None:
20
+ """Clean the mypy cache."""
21
+ ctx.run(f"rm -rf {ctx.mypy.cache}")
22
+
23
+
24
+ @task
25
+ def python(ctx: Context) -> None:
26
+ """Clean python files and folders."""
27
+ ctx.run("find . -type f -name '*.py[co]' -delete")
28
+ ctx.run("find . -type d -name __pycache__ -delete")
29
+
30
+
31
+ @task(pre=[mypy, python], default=True)
32
+ def all(_: Context) -> None:
33
+ """Run all clean tasks."""
34
+
35
+
36
+ @task(pre=[all, install])
37
+ def reset(_: Context) -> None:
38
+ """Reset the project state."""
tasks/convert.py ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Convert files for the project."""
2
+ # pylint: disable=redefined-builtin
3
+
4
+ # %% IMPORTS
5
+
6
+ from invoke import task
7
+ from invoke.context import Context
8
+
9
+ # %% TASKS
10
+
11
+
12
+ @task
13
+ def linkedin(ctx: Context) -> None:
14
+ """Convert the LinkedIn files."""
15
+ ctx.run(
16
+ f"""pandoc --to=plain --from=html \
17
+ --output={ctx.linkedin.text} \
18
+ {ctx.linkedin.html}
19
+ """
20
+ )
21
+
22
+
23
+ @task
24
+ def database(ctx: Context) -> None:
25
+ """Import files to the database."""
26
+ ctx.run(
27
+ f"""{ctx.venv.python} database.py \
28
+ --database={ctx.database.path} \
29
+ {ctx.linkedin.markdown}
30
+ """
31
+ )
32
+
33
+
34
+ @task(pre=[linkedin], default=True)
35
+ def all(_: Context) -> None:
36
+ """Run all convert tasks."""
tasks/format.py ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Format tasks for the project."""
2
+ # pylint: disable=redefined-builtin
3
+
4
+ # %% IMPORTS
5
+
6
+ from invoke import task
7
+ from invoke.context import Context
8
+
9
+ # %% TASKS
10
+
11
+
12
+ @task
13
+ def imports(ctx: Context) -> None:
14
+ """Format code imports with isort."""
15
+ ctx.run(f"{ctx.venv.python} -m isort {ctx.python.files}")
16
+
17
+
18
+ @task
19
+ def sources(ctx: Context) -> None:
20
+ """Format code sources with black."""
21
+ ctx.run(f"{ctx.venv.python} -m black {ctx.python.files}")
22
+
23
+
24
+ @task(pre=[imports, sources], default=True)
25
+ def all(_: Context) -> None:
26
+ """Run all format tasks."""
tasks/install.py ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Install tasks for the project."""
2
+ # pylint: disable=redefined-builtin
3
+
4
+ # %% IMPORTS
5
+
6
+ from invoke import task
7
+ from invoke.context import Context
8
+
9
+ # %% TASKS
10
+
11
+
12
+ @task
13
+ def venv(ctx: Context) -> None:
14
+ """Create a virtual environment."""
15
+ ctx.run(f"{ctx.python.path} -m venv {ctx.venv.path}")
16
+
17
+
18
+ @task
19
+ def main(ctx: Context) -> None:
20
+ """Install the main dependencies."""
21
+ ctx.run(f"{ctx.venv.python} -m pip install -r {ctx.pip.requirements}")
22
+
23
+
24
+ @task
25
+ def dev(ctx: Context) -> None:
26
+ """Install the development dependencies."""
27
+ ctx.run(f"{ctx.venv.python} -m pip install -r {ctx.pip.requirements_dev}")
28
+
29
+
30
+ @task(pre=[venv, main, dev], default=True)
31
+ def all(_: Context) -> None:
32
+ """Run all install tasks."""
tasks/run.py ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Run tasks for the project."""
2
+ # pylint: disable=redefined-builtin
3
+
4
+ # %% IMPORTS
5
+
6
+ from invoke import task
7
+ from invoke.context import Context
8
+
9
+ # %% TASKS
10
+
11
+
12
+ @task(default=True)
13
+ def app(ctx: Context) -> None:
14
+ """Run the main application."""
15
+ ctx.run(f"gradio {ctx.app.path}")