2 research outputs found
Functional Federated Learning in Erlang (ffl-erl)
The functional programming language Erlang is well-suited for concurrent and
distributed applications. Numerical computing, however, is not seen as one of
its strengths. The recent introduction of Federated Learning, a concept
according to which client devices are leveraged for decentralized machine
learning tasks, while a central server updates and distributes a global model,
provided the motivation for exploring how well Erlang is suited to that
problem. We present ffl-erl, a framework for Federated Learning, written in
Erlang, and explore how well it performs in two scenarios: one in which the
entire system has been written in Erlang, and another in which Erlang is
relegated to coordinating client processes that rely on performing numerical
computations in the programming language C. There is a concurrent as well as a
distributed implementation of each case. Erlang incurs a performance penalty,
but for certain use cases this may not be detrimental, considering the
trade-off between conciseness of the language and speed of development (Erlang)
versus performance (C). Thus, Erlang may be a viable alternative to C for some
practical machine learning tasks.Comment: 16 pages, accepted for publication in the WFLP 2018 conference
proceedings; final post-prin
Extending a property-based testing tool with parallel and distributed execution
[Abstract]
Software testing plays an important role in software development, as it not only helps find
bugs in the code, but also boosts the confidence of the developers that the program behaves
correctly, besides reducing the cost of fixing such errors or flaws if done in early stages.
One of the most common methods of software testing is unit testing, which tests individual
components of the software by asserting whether for cherry-picked test cases (i.e., for a
given input), the component or unit produces the expected output. This approach to testing
has however its downsides, as it is a tedious time-consuming activity, prone to errors of the
developer, such as not covering every possible case.
Property-Based Testing is a method of testing that fixes the problems found in unit testing,
for it uses properties, which are simply logical statements that capture partial correctness of
the program, to generate random input to test whether the program satisfies those properties
or not. However, while automation allows for the execution of many more tests, increasing
their number also means longer test running times.
The main goal of this project is to extend PropEr, the most powerful property-based testing
tool written in Erlang, with parallel and distributed execution and measure the obtained
speedup from doing so.[Resumo]
Probar o noso código é unha das cousas máis importantes na disciplina do desenvolvemento
do software, xa que non só nos axuda a encontrar erros no noso código, se non que
tamén aumenta a confianza das desenvoldedoras e desenvoldedores de que o seu programa se
comporta correctamente, ademais de reducir o custo de arranxar devanditos erros ou fallos
se se fai dende o inicio.
Un dos métodos máis comúns para facer probas ao software son as denominadas probas
de unidade, nas que para probar compoñentes individuáis do software, mÃrase se para casos
especÃficos (ou sexa, para entradas concretas) o compoñente ou unidade produce a saÃda esperada.
Esta forma de probar o código ten, porén, as súas desvantaxes, xa que é unha tarefa
tediosa e pesada de facer que consume moito tempo, e a maiores é propensa e susceptÃbel a
erros das desenvoldedoras e desenvolvedores, coma non cubrir tódolos casos posibles.
As probas baseadas en propiedades son un método de probar software que soluciona estes
problemas das probas de unidade, xa que no seu lugar empregan o concepto de propiedade,
que é un predicado lóxico que captura a corrección parcial do programa. Estas propiedades
son usadas para xerar entradas aleatorias para comprobar se o programa satisface as súas
expectativas ou non. Porén aÃnda que a automatización permite realizar moitas máis probas,
os tempos de execución tenden a incrementarse correlativamente.
O obxectivo principal deste proxecto é estender PropEr, a ferramenta de probas baseadas
en propiedades máis potente escrita en Erlang, para permitir a súa execución paralela ou
distribuÃda.Traballo fin de grao (UDC.FIC). EnxeñarÃa informática. Curso 2019/202